首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NATS为回复创建重复的收件箱

NATS为回复创建重复的收件箱
EN

Stack Overflow用户
提问于 2017-07-04 19:22:15
回答 1查看 542关注 0票数 2

我一直在使用C#客户端进行NATS消息传递。我创建了一个发送同步请求的消息发布器:

代码语言:javascript
运行
复制
IConnection connection = new ConnectionFactory().CreateConnection();
Msg rsp = connection.Request("subject", Encoding.ASCII.GetBytes("some text"));

我使用队列组创建了多个订阅者:

代码语言:javascript
运行
复制
IConnection connection = new ConnectionFactory().CreateConnection();
connection.SubscribeAsync(
    "subject",
    "queue",
    (sender, args) =>
    {
        connection.Publish(args.Message.Reply, new byte[] { 0x00 });
    });

一切都很好。我可以发送多个消息,每个消息发送给一个订阅者,并且只有一个订阅者,响应被发送。

但是,如果我开始使用多个队列组,事情就会出错。假设我创建了20个发布者,使用主题"S1“、"S2”、"S3“进行发布...我为每个发布者创建了5个订阅者,因此第一个发布者的订阅者的主题为"S1“,队列名称为"Q1”&c。

当我在20个发布者各自运行的线程中运行一个测试应用程序时,事情很快就停止了。发布者在等待同步响应时挂起。

我添加了一些跟踪,似乎正在复制回复令牌。因此,例如,两个不同的订阅者接收到指定相同的回复收件箱的消息:

代码语言:javascript
运行
复制
Subject=S3;Reply=_INBOX.C403F3CD707D0EA6F4B1167CE0;Payload=<some text>}
Subject=S4;Reply=_INBOX.C403F3CD707D0EA6F4B1167CE0;Payload=<some text>}

我猜回复只能发给一个发布者,所以另一个发布者就会迷路。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-05 23:51:25

感谢您提出这个问题;被重复的回复主题是一个bug。一个贡献者最近为这个问题添加了一个fix (源于Random如何使用Environment.TickCount作为种子)。

修复程序目前在master分支中;当新的版本被删除时,我会更新这个答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44904651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档