C# SDK

最近更新时间: 2026-06-30 15:06:00

操作场景

本文以调用 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 列复制。