JMS/消息队列的实际使用情况?[已关闭]
2022-08-31 06:34:52
我刚刚读到关于JMS和Apache ActiveMQ的一篇文章。并且想知道这里的人们使用JMS或类似的消息队列技术在现实世界中有什么用途?
我刚刚读到关于JMS和Apache ActiveMQ的一篇文章。并且想知道这里的人们使用JMS或类似的消息队列技术在现实世界中有什么用途?
JMS(ActiveMQ 是 JMS 代理实现)可以用作允许异步请求处理的机制。您可能希望这样做,因为请求需要很长时间才能完成,或者因为多方可能对实际请求感兴趣。使用它的另一个原因是允许多个客户端(可能用不同的语言编写)通过JMS访问信息。ActiveMQ 就是一个很好的例子,因为您可以使用 STOMP 协议来允许从 C#/Java/Ruby 客户端进行访问。
一个实际的例子是用于为特定客户下订单的Web应用程序。作为下订单(并将其存储在数据库中)的一部分,您可能希望执行一些其他任务:
为此,您的应用程序代码会将消息发布到包含订单 ID 的 JMS 队列中。侦听队列的应用程序的一部分可能会通过获取 orderId,在数据库中查找订单,然后将该订单下到另一个第三方系统来响应事件。您的应用程序的另一部分可能负责获取订单Id并向客户发送确认电子邮件。
始终使用它们以异步方式处理长时间运行的操作。Web 用户不希望等待超过 5 秒才能处理请求。如果你有一个运行时间比这更长的 URL,一种设计是将请求提交到队列,并立即发回一个 URL,用户可以在作业完成时检查该 URL。
发布/订阅是将发送方与许多接收方分离的另一种好技术。这是一个灵活的架构,因为用户可以根据需要来来去去。