【发布时间】:2015-04-19 01:59:43
【问题描述】:
小背景
- 我的应用程序将消息发布到交换器,此应用程序不知道消息需要发送到哪里或将发送到哪里。
- 消息需要通过管道中的几个步骤(队列)。为简单起见,我们将它们称为
pre-processprocess和post-process。
我的问题是
AMQP(特别是 Rabbit-mq)中是否有任何东西可以帮助我按顺序处理这些消息? (pre-process,然后是process,然后是post-process)。
我目前知道的解决方案
-
在服务本身中处理路由逻辑,因此
pre-process服务必须知道下一步是process。服务将处理将消息发布到下一个交换或队列。我对此的唯一问题是,我不一定希望
pre-process服务知道,或者关心消息接下来要去哪里。如果我需要在pre-process和process之间添加另一个服务,我必须更改pre-process中的应用程序代码或配置,然后还要确保新服务也知道下一步是@ 987654334@. -
使用某种类型的服务总线。
我对服务总线了解不多,但我认为这就是它的用途。
我对服务总线的唯一问题是我看过的所有实现(NServiceBus、MassTransit)看起来都很重量级。他们有自己的一套新术语,他们有很多特性,如果出现问题,我们现在需要成为这种特定总线技术的专家,他们似乎给这个过程增加了大量不必要的复杂性。 -
创建我自己的路由器服务。
每条消息的标题中都会包含有关它被击中的队列的信息。然后路由器将负责将消息发送到正确的服务。每个服务在完成工作后总是会将其消息发布回路由器。
做这样的事情有什么气味吗?我看到的唯一问题是,看起来我们基本上从我们的队列系统中拿走了很多控制权,而队列系统具有非常好的路由功能。
关于此事的任何想法,或战壕中的一些例子都会很棒。
【问题讨论】: