操作场景
本文以调用 C# SDK 为例介绍通过开源 SDK 实现消息收发的操作过程,帮助您更好地理解消息收发的完整过程。
说明:
此示例代码基于 开源 4.x C# SDK 构建,在使用过程中,出现过无法查看消费轨迹等问题,推荐使用Java SDK。
前提条件
- 安装 DotNet
- 下载 Demo
操作步骤
步骤1:准备环境
根据自己的 IDE 环境,新建一个项目,然后安装 NewLife.RocketMQ 依赖。
dotnet add package NewLife.RocketMQ --version 2.0.2022.325-beta0806
步骤2:生产消息
创建并编译运行生产消息程序。
//生产者
var mq = new Producer
{
Topic = "TopicTest1", //对于非通用版集群,需要拼接完整的topic,如 MQ_INSTxxx_aaa%TopicTest
NameServerAddress = "127.0.0.1:9876",// 云平台nameserver接入点
Log = XTrace.Log,
AclOptions = new AclOptions
{
AccessKey = "页面的ak",
SecretKey = "页面的sk",
},
};
mq.Start();
for (var i = 0; i < 10; i++)
{
var str = "生产消息测试" + i;
var sr = mq.Publish(str, "TagA");
}
| 参数 | 说明 |
|---|---|
| Topic | Topic 的名称,在控制台 Topic 管理页面复制,此处需拼接命名空间名称,格式为namespace全称%topic名称,例如 MQ_INSTxxx_aaa%TopicTest。 |
| NameServerAddress | 集群接入地址,控制台集群基本信息页面的接入信息模块获取。 |
| SecretKey | 角色名称,在控制台的集群权限页面 SecretKey 列复制。 |
| AccessKey | 角色密钥,在控制台的集群权限页面 AccessKey 列复制。 |
| TAGS | 用来设置消息的 TAG。 |
步骤3:消费消息
创建并编译运行消费消息程序。
//消费者
var consumer = new Consumer
{
Topic = "TopicTest1",//对于非通用版集群,需要拼接完整的topic,如 MQ_INSTxxx_aaa%TopicTest
Group = "test", //对于非通用版集群,需要拼接完整的Goup,如 MQ_INSTxxx_aaa%GroupTest
NameServerAddress = "127.0.0.1:9876",
FromLastOffset = true,
SkipOverStoredMsgCount = 0,
BatchSize = 20,
Log = XTrace.Log,
AclOptions = new AclOptions
{
AccessKey = "页面的ak",
SecretKey = "页面的sk",
},
};
consumer.OnConsume = (q, ms) =>
{
XTrace.WriteLine("[{0}@{1}]收到消息 [{2}]", q.BrokerName, q.QueueId, ms.Length);
foreach (var item in ms.ToList())
{
XTrace.WriteLine($"消息 {item.Keys},发送时间{item.BornTimestamp.ToDateTime()},内容 {item.Body.ToStr()}");
}
return true;
};
consumer.Start();
| 参数 | 说明 |
|---|---|
| Topic | Topic 的名称,在控制台 Topic 管理页面复制。此处需拼接命名空间名称,格式为namespace全称%topic名称,例如 MQ_INSTxxx_aaa%TopicTest。 |
| Group | Group 的名称,在控制台 Group 管理页面复制。此处需拼接命名空间名称,格式为namespace全称%group名称,例如 MQ_INSTxxx_aaa%GroupTest。 |
| NameServerAddress | 集群接入地址,控制台集群基本信息页面的接入信息模块获取。 |
| SecretKey | 角色名称,在控制台的集群权限页面 SecretKey 列复制。 |
| AccessKey | 角色密钥,在控制台的集群权限页面 AccessKey 列复制。 |