NServiceBus:进程发布到多个队列的要求

NServiceBus:进程发布到多个队列的要求,nservicebus,Nservicebus,我们已经有一个进程使用NServiceBus将消息发布到系统中运行的其他进程。我想向这个进程添加额外的功能,这将要求它将消息发布到其他进程,但我希望能够使用新类型的消息写入另一个队列。最好是,我不想在同一队列中将消息混合在一起,因为它们具有不同的优先级。我所看到的一切表明,NServiceBus只支持每个进程一个队列。这是正确的吗 如果是这样,那么有人能提出一个好的解决方案吗?我能想到的唯一方法是将新队列放在一个单独的“NServiceBus Hub”进程中,然后使用WCF集成功能将新消息跨进程

我们已经有一个进程使用NServiceBus将消息发布到系统中运行的其他进程。我想向这个进程添加额外的功能,这将要求它将消息发布到其他进程,但我希望能够使用新类型的消息写入另一个队列。最好是,我不想在同一队列中将消息混合在一起,因为它们具有不同的优先级。我所看到的一切表明,NServiceBus只支持每个进程一个队列。这是正确的吗

如果是这样,那么有人能提出一个好的解决方案吗?我能想到的唯一方法是将新队列放在一个单独的“NServiceBus Hub”进程中,然后使用WCF集成功能将新消息跨进程从我的进程中继到Hub,以便插入新队列


谢谢

您担心在单个队列上混合高优先级和低优先级消息是正确的

这需要在发送方和接收方解决

发送方不在本地写入它自己的单个队列。相反,当它向收件人发送消息时,发件人会写入特定于该收件人的临时本地队列

所以你有两个潜在的问题:

  • 接收方正在处理来自同一队列的高优先级和低优先级消息
  • 发件人正在发送高优先级和低优先级消息 如果是这种情况,您可以执行以下一项或两项操作:

  • 将接收器服务分为两个服务,一个用于高优先级处理,另一个用于低优先级处理
  • 您可能还希望将高优先级处理分离到它自己的NServiceBus发布服务器服务中
    这将按优先级为您提供多个端点,它们之间有一个清晰的分隔

    休,谢谢你的回复。我在试着理解你的建议。对我来说,问题不在于接收者(订阅者),因为这些都是独立的服务。问题在于发送者(发布者)应用程序,它同时生成高优先级和低优先级消息(不能分开)。我可以将发布者队列放在单独的服务中,但是我如何在应用程序和发布者服务之间进行通信呢?WCF?因此,您遇到的问题不是排队,而是您正在将高优先级和低优先级消息耦合到同一个服务中。如果您的订阅者没有同时订阅这两种消息类型,那么您唯一的问题是,您的发布者在发布低优先级内容时将耗尽CPU周期。发布只是评估订阅并通过MSMQ发送。MSMQ将确保为每个订户创建一个单独的本地队列来传输消息。因此,如果您想对消息进行优先级排序,就必须将发布者分成多个服务。