Java için TCP istemci SDK'sını kullanarak bir test projesi oluşturun ve çalıştırın. Demo projesi; Java, Spring ve Spring Boot ortamlarında normal, sıralı, işlem bazlı, zamanlanmış ve gecikmeli olmak üzere beş mesaj türü için çalışan örnekler içerir.
Ön koşullar
Başlamadan önce aşağıdaki gereksinimleri karşıladığınızdan emin olun:
IntelliJ IDEA Ultimate Edition veya Eclipse yüklü olmalıdır (aşağıdaki örneklerde IntelliJ IDEA kullanılmıştır)
JDK yüklü olmalıdır
demo projesi yerel makinenize indirilmiş ve arşivden çıkarılmış olmalıdır (çıkarılan klasörün adı
rocketmq-demo-masterşeklindedir)ApsaraMQ for RocketMQ konsolu içinde oluşturulmuş aşağıdaki kaynaklara sahip bir ApsaraMQ for RocketMQ örneğiniz olmalıdır: örnek, konu, tüketici grubu, AccessKey ID ve AccessKey secret. Talimatlar için Kaynak oluşturma bölümüne bakın
Demo projesini yapılandırın
1. Adım: Projeyi içe aktarın
Demo proje dosyalarını IntelliJ IDEA'ya içe aktarın.
2. Adım: SDK sürümünü güncelleyin
pom.xml dosyasında Java için TCP istemci SDK'sı bağımlılığını en son sürüme güncelleyin. Kullanılabilir sürümler için Sürüm notları bölümüne bakın.
<dependency>
<groupId>com.aliyun.openservices</groupId>
<artifactId>ons-client</artifactId>
<!--Replace with the latest version from the release notes-->
<version>1.8.8.5.Final</version>
</dependency>
3. Adım: MqConfig sınıfını yapılandırın
Oluşturduğunuz kaynaklarla eşleşmesi için MqConfig sınıfındaki aşağıdaki alanları ayarlayın:
public static final String TOPIC = "<your-topic>";
public static final String GROUP_ID = "<your-group-id>";
public static final String ORDER_TOPIC = "<your-order-topic>";
public static final String ORDER_GROUP_ID = "<your-order-group-id>";
public static final String ACCESS_KEY = "<your-access-key>";
public static final String SECRET_KEY = "<your-secret-key>";
public static final String TAG = "<your-message-tag>";
public static final String NAMESRV_ADDR = "<your-tcp-endpoint>";
Yer tutucuları gerçek değerlerinizle değiştirin:
| Yer Tutucu | Açıklama | Nerede Bulunur |
|---|---|---|
<your-topic> |
Normal ve işlem bazlı mesajlar için konu | ApsaraMQ for RocketMQ console > örneğiniz > Konular |
<your-group-id> |
Tüketici grubu kimliği | ApsaraMQ for RocketMQ console > örneğiniz > Gruplar |
<your-order-topic> |
Sıralı mesajlar için konu | Yukarıdakiyle aynı (sıralı mesajlar için ayrı bir konu oluşturun) |
<your-order-group-id> |
Sıralı mesajlar için tüketici grubu | Yukarıdakiyle aynı |
<your-access-key> |
Alibaba Cloud hesabınızın AccessKey ID'si | AccessKey çifti oluşturma bölümüne bakın |
<your-secret-key> |
Alibaba Cloud hesabınızın AccessKey secret değeri | Yukarıdakiyle aynı |
<your-message-tag> |
Filtreleme için özel mesaj etiketi | Herhangi bir dize değeri |
<your-tcp-endpoint> |
Örneğinizin TCP uç noktası | ApsaraMQ for RocketMQ console > örneğiniz > Instance Details sayfası > TCP Endpoint bölümü |
Konu üzerinde izinleri olan bir RAM kullanıcısının AccessKey çiftini de kullanabilirsiniz. Kullanılabilir yapılandırma parametreleri hakkında daha fazla bilgi için Yöntemler ve parametreler bölümüne bakın.
4. Adım: common.xml dosyasını yapılandırın (yalnızca Spring ve Spring Boot)
Spring veya Spring Boot örneklerini kullanmayı planlıyorsanız common.xml dosyasını kaynak bilgilerinizle güncelleyin:
<props>
<prop key="AccessKey">XXX</prop> <!--Replace with your AccessKey ID-->
<prop key="SecretKey">XXX</prop> <!--Replace with your AccessKey secret-->
<prop key="GROUP_ID">XXX</prop> <!--Replace with your consumer group ID-->
<prop key="Topic">XXX</prop> <!--Replace with your topic-->
<prop key="NAMESRV_ADDR">XXX</prop> <!--Replace with your TCP endpoint-->
</props>
Mesaj gönderin ve alın
Demo projesi üreticileri ve tüketicileri tek bir iş parçacığında çalıştırır. Üretim sistemlerinde üreticileri ve tüketicileri ayrı iş parçacıklarında veya sunucularda çalıştırın. Çok iş parçacıklı örnekler için Birden çok iş parçacığı kullanarak mesaj gönderme bölümüne bakın.
İlgili sınıfın main yöntemini çağırarak her bir örneği çalıştırın.
Mesaj gönderin
Mesaj türünüz ve çerçevenizle eşleşen üretici sınıfını çalıştırın:
| **Mesaj Türü** | **Java** | **Spring** | **Spring Boot** |
|---|---|---|---|
| Normal | SimpleMQProducer |
ProducerClient |
ProducerClient |
| İşlem Bazlı | SimpleTransactionProducer |
TransactionProducerClient |
TransactionProducerClient |
| Sıralı (FIFO) | SimpleOrderProducer |
OrderProducerClient |
OrderProducerClient |
| Zamanlanmış ve Gecikmeli | MQTimerProducer |
Desteklenmiyor | Desteklenmiyor |
Mesaj türlerine göre ayrıntılar:
İşlem bazlı mesajlar:
LocalTransactionCheckerImplsınıfı yerel işlem durumu denetimlerini yönetir. Tam iş akışı için İşlem bazlı mesajları gönderme ve alma bölümüne bakın.Sıralı mesajlar: Mesajlar ilk giren ilk çıkar (FIFO) düzeninde gönderilir ve tüketilir. Ayrıntılar için Sıralı mesajları gönderme ve abone olma bölümüne bakın.
Zamanlanmış ve gecikmeli mesajlar:
MQTimerProducersınıfı varsayılan olarak mesajları 3 saniyelik bir gecikmeyle teslim eder. Yapılandırılabilecek maksimum gecikme süresi 40 gündür. Ayrıntılar için Zamanlanmış mesajları gönderme ve alma bölümüne bakın.
Mesajların gönderildiğini doğrulayın
Mesajları gönderdikten sonra ApsaraMQ for RocketMQ konsolu'na gidin ve konuya göre mesajları sorgulayın. Gönderdiğiniz mesajlar sonuçlarda görünmelidir.
Mesajları alın
Mesaj türünüz ve çerçevenizle eşleşen tüketici sınıfını çalıştırın:
| **Mesaj Türü** | **Java** | **Spring** | **Spring Boot** |
|---|---|---|---|
| Normal | SimpleMQConsumer |
ConsumerClient |
ConsumerClient |
| İşlem Bazlı | SimpleMQConsumer |
ConsumerClient |
ConsumerClient |
| Sıralı (FIFO) | SimpleOrderConsumer |
OrderConsumerClient |
OrderConsumerClient |
| Zamanlanmış ve Gecikmeli | SimpleMQConsumer |
Desteklenmiyor | Desteklenmiyor |
Sınıf başlatma işlemi başlangıçta birkaç saniye sürer. Bu beklenen bir durumdur ve yalnızca bir kez gerçekleşir; üretim ortamında sınıflar yalnızca uygulama başlatma sırasında yüklenir.
Mesajların alındığını doğrulayın
Bir günlük girişi, tüketicinin mesajı aldığını onaylar. Daha fazla doğrulama yapmak için tüketicilerin durumunu görüntüleyin. ApsaraMQ for RocketMQ konsolu içinde başlattığınız tüketiciler çevrimiçi ve konuya abone olmuş olarak görünmelidir.