队列或Rest API是处理用户请求的更好方法吗?

时间:2018-10-11 14:04:21

标签: java rest activemq load-balancing mq

当多个应用程序希望以电子邮件形式发送通知时,我有一个要求。我希望有一个中央应用程序,用户也可以在其中发送通知,并且该中央应用程序可以转换为电子邮件并发送通知。我应该在中央应用程序之间使用REST API从其他应用程序获取通知,还是在其他应用程序可以编写且我的应用程序可以侦听的地方使用MQ?哪种方法更好?为什么?

1 个答案:

答案 0 :(得分:0)

REST API <-> REST API在运行时紧密耦合,当您具有多个服务层时,可能会导致级联故障和复杂的错误处理场景。此外,一项服务可能会超越另一项服务,从而导致拒绝服务。

应用程序-> q->应用程序连接在运行时松散耦合。当一个系统出现故障时,队列将填满。消息系统在一个系统生产太快的情况下也充当自然缓冲,b / c第二个系统正在以第二个系统可以处理的速率与第二个系统正在处理的速率消耗数据生产者发送数据。

话虽这么说,通过消息发送查询请求会增加不必要的延迟,因为API“查询”实际上是轮询消耗,并且通常可以缓解快速生产和级联失败的问题。

TLDR:两者都需要。用于查询的API和用于命令的消息传递。 CQRS可以在这里应用:

C-命令..(创建,保存,删除,执行某些操作等)通过消息发送 Q-查询..(搜索,列表,获取等)通过API发送