普通消息是指云消息隊列 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();
}
}
訂閱普通消息
訂閱普通消息的說明和示例代碼,請參見訂閱消息。
文檔內容是否對您有幫助?