gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 14:28:14 26 4
gpt4 key购买 nike

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

基本上我有一个 DownloadWebpage 操作和一个 WebPageDownloaded 事件。在 DownloadWebpage 的使用者中,我发布了一个 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("downloadwebpage", e => e.Consumer<DownloadPageConsumer>());
configurator.ReceiveEndpoint(host, e => e.Consumer<WebPageDownloadedConsumer>());
configurator.ReceiveEndpoint(host, e => e.Consumer<WebPageDownloadedConsumer02>());

但是消息在运行之间似乎不会持续存在。

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

任何人知道我哪里出了问题,我知道我只是缺少某种程度的理解,但就是看不到找出我不知道的东西。

最佳答案

我弄清楚了接收端点上需要什么,并且还使用主题样式消息的订阅。

关于c# - MassTransit 注册多个相同消息类型的消费者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41767850/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com