ActiveMQ用于什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

我查了一下并发送消息给它。但为什么?为什么不使用数据库?ActiveMQ必须具有该数据库不需要的功能?

提问于
用户回答回答于

ActiveMQ,或者总的来说,所有面向消息的中间件(MOM)实现都是为在两个应用程序之间发送消息或在一个应用程序中发送两个组件而设计的。

从本质上讲,MOM和数据库有一个共同的基础,即它们提供事务和持久的数据存储,以便可以读取和写入。最大的区别是使用模式--数据库非常通用,并且对多个表的复杂搜索进行了优化,MOM被优化用于每次读取消息,就像FIFO一样。

JMS是一个APIActiveMQ实现,是JavaEnterprise应用程序的一个重要基石。这使得消息共享了相当通用的格式和语义,这使得不同应用程序之间的集成更加容易。

用户回答回答于

它用于两个分布式进程之间的可靠通信。你可以将消息存储在数据库中,以便在两个进程之间进行通信,但是,一旦收到消息,你就必须删除该消息。这意味着为每条消息插入和删除行。当你试图扩大每秒传递数千条消息的规模时,数据库往往会崩溃。

另一方面,面向消息的中间件(如ActiveMQ)是为处理这些用例而构建的,它们假定健康系统中的消息将很快被删除,并且可以进行优化以避免开销。它还可以将消息推送给使用者,而不必通过执行SQL查询来轮询新消息。这进一步减少了处理发送到系统的新消息所涉及的延迟。

扫码关注云+社区

领取腾讯云代金券