You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:DotPulsar未实现SendAsync,如何在C#中异步生产Pulsar消息?

C#中用DotPulsar异步发Pulsar消息的可行方案

优先用内置异步方法(先确认版本)

DotPulsar的IProducer<T>本身就提供了SendAsync异步发送方法,如果你当前版本找不到,大概率是用了旧版本,建议先升级到最新稳定版。示例代码如下:

using DotPulsar;
using DotPulsar.Extensions;

// 初始化客户端
var client = PulsarClient.Builder()
                         .ServiceUrl("pulsar://你的Pulsar地址:6650")
                         .Build();

// 创建生产者
var producer = await client.NewProducer()
                           .Topic("目标Topic名")
                           .CreateAsync();

// 构造消息并异步发送
var msg = new Message("测试消息内容");
await producer.SendAsync(msg);

// 用完记得释放资源
await producer.DisposeAsync();
await client.DisposeAsync();

临时兼容方案:用Task.Run包装同步Send

如果暂时没法升级版本,也可以用Task.Run把同步的Send方法包成异步调用,避免阻塞主线程:

await Task.Run(() => producer.Send(msg));

注意:这只是权宜之计,本质是把同步操作扔到后台线程,不是真正的IO异步,不建议长期用。

批量异步发送(提升效率)

如果要发多条消息,直接用批量版的SendAsync就行,比单条发效率高:

var msgList = new List<Message>
{
    new Message("消息1"),
    new Message("消息2"),
    new Message("消息3")
};

await producer.SendAsync(msgList);

内容的提问来源于stack exchange,提问作者tpkurilla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 11:36:00