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

时间:2013-07-02 19:33:49

标签: rabbitmq masstransit

我在RabbitMQ上使用MassTransit。

以下是对所发生情况的总结。

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

  2. 处理单元,这是一个使用订单消息的应用程序,并对其执行一些处理,然后发布 OrderProcessed

  3. 所以这里处理单位正在消费和发布。

    在博客,文档和论坛中,我读到每个应用都必须有自己的队列,我这样做但仍然有大量的消息(大约%30)将转到错误队列和 WHEN 我在处理单元上使用两个队列来完成它可以正常工作。 (表示处理单元有一个IServiceBus,其中不同的队列只是用于消费,另一个仅用于发布)

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

    谢谢,

    Peyman的

2 个答案:

答案 0 :(得分:1)

您只需要一个IServiceBus即可在一个流程中进行发布和使用。 IServiceBus是您容器中的单身人士吗?我建议收集一些示例代码(比如您如何设置IServiceBus)并将其提供给邮件列表https://groups.google.com/forum/?fromgroups#!forum/masstransit-discuss。如果没有更多信息,很难提供解决方案。

答案 1 :(得分:1)

每个进程可以有多个总线(每个都绑定到其队列),事实上,这是确保队列不被一个消费者的消息类型垄断的推荐方法。

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

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

“发布队列”虽然没有意义。就像特拉维斯说的那样,将细节发布给小组,你会得到很多帮助。