普通訊息是指雲訊息佇列 RocketMQ 版中無特性的訊息,區別於有特性的定時和延時訊息、順序訊息和事務訊息。本文提供使用TCP協議下的.NET SDK收發普通訊息的範例程式碼。
前提條件
您已完成以下操作:
下載.NET SDK。更多資訊,請參見版本說明。
環境準備。更多資訊,請參見環境準備。
建立資源。代碼中涉及的資源資訊,例如執行個體、Topic和Group ID等,需要在控制台上提前建立。更多資訊,請參見建立資源。
擷取阿里雲存取金鑰AccessKey ID和AccessKey Secret。更多資訊,請參見建立AccessKey。
發送普通訊息
說明
具體的範例程式碼,請以雲訊息佇列 RocketMQ 版程式碼程式庫為準。
您可以運行以下代碼發送訊息。請按說明正確設定相關參數。
using System;
using ons;
public class ProducerExampleForEx
{
public ProducerExampleForEx()
{
}
static void Main(string[] args) {
// 配置帳號, 從訊息佇列RocketMQ版控制台擷取設定。
ONSFactoryProperty factoryInfo = new ONSFactoryProperty();
//請確保環境變數ALIBABA_CLOUD_ACCESS_KEY_ID、ALIBABA_CLOUD_ACCESS_KEY_SECRET已設定。
//AccessKey ID,阿里雲身分識別驗證標識。
factoryInfo.setFactoryProperty(ONSFactoryProperty::AccessKey, getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"));
//AccessKey Secret,阿里雲身分識別驗證密鑰。
factoryInfo.setFactoryProperty(ONSFactoryProperty::SecretKey, getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// 您在訊息佇列RocketMQ版控制台建立的Group ID。
factoryInfo.setFactoryProperty(ONSFactoryProperty.ProducerId, "GID_example");
// 您在訊息佇列RocketMQ版控制台建立的Topic。
factoryInfo.setFactoryProperty(ONSFactoryProperty.PublishTopics, "T_example_topic_name");
// 設定TCP接入網域名稱,進入訊息佇列RocketMQ版控制台執行個體詳情頁面的存取點地區查看。
factoryInfo.setFactoryProperty(ONSFactoryProperty.NAMESRV_ADDR, "NameSrv_Addr");
// 設定日誌路徑。
factoryInfo.setFactoryProperty(ONSFactoryProperty.LogPath, "C://log");
// 建立生產者執行個體。
// 說明:生產者執行個體是安全執行緒的,可用於發送不同Topic的訊息。基本上,您每一個線程只需要一個生產者執行個體。
Producer producer = ONSFactory.getInstance().createProducer(factoryInfo);
// 啟動用戶端執行個體。
producer.start();
// 建立訊息對象。
Message msg = new Message(factoryInfo.getPublishTopics(), "tagA", "Example message body");
msg.setKey(Guid.NewGuid().ToString());
for (int i = 0; i < 32; i++) {
try
{
SendResultONS sendResult = producer.send(msg);
Console.WriteLine("send success {0}", sendResult.getMessageId());
}
catch (Exception ex)
{
Console.WriteLine("send failure{0}", ex.ToString());
}
}
// 在您的線程即將退出時,關閉生產者執行個體。
producer.shutdown();
}
}
訂閱普通訊息
訂閱普通訊息的說明和範例程式碼,請參見訂閱訊息。