Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MassTransit注册相同消息类型的多个消费者_C#_Azure_Masstransit - Fatal编程技术网

C# MassTransit注册相同消息类型的多个消费者

C# MassTransit注册相同消息类型的多个消费者,c#,azure,masstransit,C#,Azure,Masstransit,我在理解MassTransit和Azure在发布消息而不是发送消息时发生的情况时遇到了一个小问题 基本上我有一个下载网页的动作和一个下载网页的事件。在下载网页的消费者中,我发布了WebPageDownloaded事件,我希望该事件的多个订阅者能够使用该通知 但我无法使用同一队列名称为事件注册多个使用者。例如,以下代码在尝试注册WebpageDownloaded事件的第二个使用者时将出现异常 configurator.ReceiveEndpoint("downloadwebpage", e =&g

我在理解MassTransit和Azure在发布消息而不是发送消息时发生的情况时遇到了一个小问题

基本上我有一个下载网页的动作和一个下载网页的事件。在下载网页的消费者中,我发布了WebPageDownloaded事件,我希望该事件的多个订阅者能够使用该通知

但我无法使用同一队列名称为事件注册多个使用者。例如,以下代码在尝试注册WebpageDownloaded事件的第二个使用者时将出现异常

configurator.ReceiveEndpoint("downloadwebpage", e => e.Consumer<DownloadPageConsumer>());
configurator.ReceiveEndpoint(host, "webpagedownloaded", e => e.Consumer<WebPageDownloadedConsumer>());
configurator.ReceiveEndpoint(host, "webpagedownloaded", e => e.Consumer<WebPageDownloadedConsumer02>());
configurator.ReceiveEndpoint(“下载网页”,e=>e.Consumer());
ReceiveEndpoint(主机,“webpagedownloaded”,e=>e.Consumer());
ReceiveEndpoint(主机,“webpagedownloaded”,e=>e.Consumer());
但是,当我没有指定接收队列名称时,以下操作将起作用

configurator.ReceiveEndpoint("downloadwebpage", e => e.Consumer<DownloadPageConsumer>());
configurator.ReceiveEndpoint(host, e => e.Consumer<WebPageDownloadedConsumer>());
configurator.ReceiveEndpoint(host, e => e.Consumer<WebPageDownloadedConsumer02>());
configurator.ReceiveEndpoint(“下载网页”,e=>e.Consumer());
ReceiveEndpoint(主机,e=>e.Consumer());
ReceiveEndpoint(主机,e=>e.Consumer());
但在两次运行之间,消息似乎不会持久

更新我刚刚发现,当总线停止时,事件消息会移动到死信队列。例如,我启动服务并发送一条消息,该消息在使用时发布一个事件。事件监听器接收到这个消息,所有工作正常。 然后我停止服务,我不注册事件消费者,我发送消息并发布事件。事件正在等待处理(我可以在Azure中的临时队列中看到它们),但我一停车,它们就会立即移动到死信队列。我原以为它们会被保存在那里,以便将来有一个服务来接收它们,并在生存时间结束后超时,然后移动到死信队列


任何人都知道我错在哪里,我知道我只是缺少了一些理解,但就是看不到我不知道的东西。

我在接收端点上找到了我需要的东西,也通过订阅主题风格的消息。

好的,伙计们,我可能知道了一些事情,我完全错过了configurator.SubscriptionEndpoint,目前正在查看。如果您需要进一步帮助,请更新问题。您可以在接收端点上有多个使用者,但每个接收端点都需要唯一的队列名称。嗨,Chris,感谢您的更新,我现在有一个一起工作的示例。谢谢你的意见。