我查了一下,它曾经在两个系统之间发送消息。
但为什么?您为什么不只使用一个Database
?
必须有一些功能,ActiveMQ
有Databases
没有?
我查了一下,它曾经在两个系统之间发送消息。
但为什么?您为什么不只使用一个Database
?
必须有一些功能,ActiveMQ
有Databases
没有?
Answers:
它用于在两个分布式进程之间可靠地通信。
是的,你可以存储信息的数据库如收到消息你必须尽快两个进程之间的通信,但是,DELETE
消息,这意味着一列INSERT
,并DELETE
为每个邮件。
当您尝试扩大每秒传输数千条消息的速度时,数据库容易崩溃。
ActiveMQ
另一方面,面向消息的中间件[MOM] 则可以处理这些用例。
他们认为,运行状况良好的系统中的消息将很快删除,并且可以进行优化以避免开销。
它还可以将消息推送给使用者,而不是使用者必须通过执行SQL查询来轮询新消息。
这进一步减少了处理处理发送到系统中的新消息所涉及的等待时间。
ActiveMQ
,或通常所有面向消息中间件(MOM)的实现都是为了在两个应用程序或一个应用程序内的两个组件之间发送消息而设计的。
本质上,MOM和数据库具有共同的基础,因为它们提供了可读写的事务性和持久性数据存储。
最大的区别是使用模式-数据库非常通用并且针对在多个表上的复杂搜索进行了优化,而MOM则针对读取消息进行了优化,以FIFO之类的方式[FIFO]一次。
JMS
ActiveMQ实现的API是Java Enterprise应用程序中的重要基石。这使得消息共享一种相当通用的格式和语义,从而使不同应用程序之间的集成更加容易。
当然,也有很多的更详细的特征是仅在ActiveMQ中,有线协议等OpenWire
,STOMP
并且MQTT
,JMS
,EIP
与Apache骆驼,消息模式,如“请求/应答”和“发布/订阅”,JMS桥接,聚类(统称为”经纪人网络”),可以进行扩展和分发等。
如果您有兴趣,应该对这些主题进行一些阅读,因为它们很大。
ActiveMQ
具有强大的计划程序支持,这意味着您可以计划在特定时间发送邮件。
我们已使用此功能将药物提醒发送给在医疗保健场景中上载药物详细信息的患者。
Scheduled Jobs
用于相同的目的。
来自维基百科
Apache ActiveMQ是一个用Java编写的开源消息代理,同时带有完整的Java Message Service(JMS)客户端。它提供“企业功能”,在这种情况下,这意味着促进来自多个客户端或服务器的通信
关于您的查询:
你为什么不使用数据库?
您应该将数据库用于持久数据,而不是临时数据。假设您必须从发件人向接收方发送一条消息。接收到消息后,接收方将执行一项操作(接收,处理和忘记)。处理完该消息后,您根本不需要该消息。在这种情况下,将消息存储在持久数据库中不是正确的解决方案。
如果您使用数据库而不是消息传递系统,则我完全同意@Hiram Chirino有关在数据库中插入和删除消息的答案。
ActiveMQ必须具有数据库没有的功能?
查看此演示文稿以了解ActiveMQ的内部。