C# SDK

最近更新时间:2024-04-15 15:01:21

我的收藏

操作场景

本文以调用 C# SDK 为例介绍通过开源 SDK 实现消息收发的操作过程,帮助您更好地理解消息收发的完整过程。

前提条件

操作步骤

步骤1:准备环境

根据自己的 IDE 环境,新建一个项目,然后安装 NewLife.RocketMQ 依赖。
dotnet add package NewLife.RocketMQ --version 2.0.2022.325-beta0806

步骤2:生产消息

创建并编译运行生产消息程序。
//生产者
var mq = new Producer
{
Topic = "TopicTest1", //不需要拼接namespace等
NameServerAddress = "127.0.0.1:9876",// 腾讯云页面填写
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");
}
参数
说明
nameserver
集群接入地址,在控制台集群管理页面操作列的获取接入地址获取。新版共享集群与专享集群命名接入点地址在命名空间列表获取。



secretKey
角色名称,在 角色管理 页面复制。
accessKey
角色密钥,在 角色管理 页面复制密钥列复制。
img


topicName
Topic 的名称,在控制台 Topic 页面复制
TAGS
用来设置消息的 TAG。
KEYS
设置消息业务 key。
当前开源社区的 Python 客户端生产消息存在一定缺陷,导致同个 Topic 的不同队列间负载不均,详情可参见 缺陷详情

步骤3:消费消息

创建并编译运行消费消息程序。
//消费者
var consumer = new Consumer
{
Topic = "TopicTest1",//对于非通用版集群
Group = "test",
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();
参数
说明
groupName
消费者 Group 的名称,在控制台 Group 页面复制
nameserver
集群接入地址,在控制台集群管理页面操作列的获取接入地址获取。新版共享集群与专享集群命名接入点地址在命名空间列表获取。



secretKey
角色名称,在 角色管理 页面复制。
accessKey
角色密钥,在 角色管理 页面复制密钥列复制。
img


topicName
Topic 的名称,在控制台 Topic 页面复制。
TAGS
设置订阅消息的tag,默认为"*",表示订阅所有消息

步骤4:查看消费详情

登录 TDMQ 控制台,在集群管理 > Group 页面,可查看与 Group 连接的客户端列表,单击操作列的查看详情,可查看消费者详情。
img


说明
上述是对消息的发布和订阅方式的简单介绍。更多操作可参见 GitHub Demo