使用RabbitMQ去耦同步Web服务层,有什么好主意?

时间:2012-03-15 07:18:39

标签: java web-services rabbitmq

在我目前的项目中,我们正在实现一个webservice层,我们想要使用RabbitMQ来解耦这个层。最后这给了我一个非常薄的web服务层。这样做的挑战是所有的webservice调用都是同步的。 Web服务层的调用者需要得到响应。

我想知道与RabbitMQ进行脱钩是好还是坏?

1 个答案:

答案 0 :(得分:4)

如果您的Web服务基于CQRS模式,其中您的更新/插入被单独处理到查询,那么您可以以解耦方式使用Rabbit来处理插入/更新,以便Web服务请求丢弃包含要插入/更新到队列的信息然后返回。这样,您不会等待db提交事务。 然后,您将拥有一个单独的服务来使用这些消息并进行适当的数据库插入/更新调用。

您的查询显然仍需要与您的数据库直接交互才能返回信息。

至于这是好还是坏,这完全是主观的。如果您的数据库非常简单并且插入/更新不会花费很多时间,那么您可能会引入很少或没有净增益的复杂性。例如,您可以使用javascript对您的Web服务进行异步调用来处理帖子,从而为最终用户提供响应式体验。