Rabbitmq 一个应用中有两条服务总线?

Rabbitmq 一个应用中有两条服务总线?,rabbitmq,masstransit,Rabbitmq,Masstransit,我正在使用MassTransit和RabbitMQ 下面是所发生情况的摘要 订单服务器这是一个获取订单并发布(使用MassTransit)订单消息的应用程序 处理单元这是一个应用程序,它使用订单消息并对其进行一些处理,然后发布订单处理 因此这里的处理单元既消耗又发布 在博客、文档和论坛中,我读到每个应用程序都必须有自己的队列,我这样做了,但仍然有大量消息(大约%30)将进入错误队列,当我在处理单元上使用两个队列时,它工作得很好。(表示处理单元有一个IServiceBus,其中一个队列不同,仅用于

我正在使用MassTransit和RabbitMQ

下面是所发生情况的摘要

  • 订单服务器这是一个获取订单并发布(使用MassTransit)订单消息的应用程序

  • 处理单元这是一个应用程序,它使用订单消息并对其进行一些处理,然后发布订单处理

  • 因此这里的处理单元既消耗又发布

    在博客、文档和论坛中,我读到每个应用程序都必须有自己的队列,我这样做了,但仍然有大量消息(大约%30)将进入错误队列,当我在处理单元上使用两个队列时,它工作得很好。(表示处理单元有一个IServiceBus,其中一个队列不同,仅用于消费,另一个队列仅用于发布)

    我想知道我的设计是否正确。我觉得不应该是这样

    谢谢


    Peyman

    您应该只需要一个
    IServiceBus
    就可以在单个流程中发布和消费。
    IServiceBus
    在您的容器中是单例吗?我建议收集一些示例代码(比如如何设置
    IServiceBus
    ),并将其提供给邮件列表。如果没有更多的信息,很难提供解决方案

    每个进程可以有多个总线(每个总线都绑定到自己的队列),事实上,这是确保队列不被一个使用者的消息类型独占的推荐方法

    在这种情况下,使用DI配置总线可能很棘手,因为您必须明确指定总线实例和每个实例所服务的使用者之间的绑定

    将它们拆分为单独的应用程序/服务可能更容易,但我知道部署和配置可能会很麻烦


    “发布队列”没有任何意义。正如Travis所说,将详细信息发布到小组中,你会得到很多帮助。

    是的,是singelton,我的应用程序正在使用消息a并发布消息B。还有一堆消息a转到错误队列。这对我来说没有意义,同样,但我如何从创建队列的方法中逃脱ReceiveFrom?如果存在控制数据,即使没有数据(?),每个总线都需要一个队列。您始终可以使用端点工厂,直接发送,而不是发布。@Peyman,要在从接收到的总线上发布,只需将所述总线注入使用者即可。