ActiviMq 消息中间件的原理与使用方式

一、ActiviMQ d的作用、原理

Activemq的作用就是系统之间进行通信。当然可以使用其他方式进行系统间通信,如果使用Activemq的话可以对系统之间的调用进行解耦,实现系统间的异步通信。

原理就是生产者生产消息,把消息发送给activemq。Activemq接收到消息,然后查看有多少个消费者,然后把消息转发给消费者,此过程中生产者无需参与。消费者接收到消息后做相应的处理和生产者没有任何关系。

二、ActiviMQ 如果数据提交不成功怎么办?

Activemq有两种通信方式,点到点形式和发布订阅模式。如果是点到点模式的话,如果消息发送不成功此消息默认会保存到activemq服务端知道有消费者将其消费,所以此时消息是不会丢失的。

如果是发布订阅模式的通信方式,默认情况下只通知一次,如果接收不到此消息就没有了。这种场景只适用于对消息送达率要求不高的情况。如果要求消息必须送达不可以丢失的话,需要配置持久订阅。每个订阅端定义一个id,在订阅是向activemq注册。发布消息和接收消息时需要配置发送模式为持久化。此时如果客户端接收不到消息,消息会持久化到服务端,直到客户端正常接收后为止。

三、 ActiveMQ服务器宕机怎么办?

造成的问题: 持久化消息保存在文件中;非持久化消息堆积到一定程度,内存告急后会被写入到临时文件中,来腾出内存。

  1. 当大量生产持久化消息超过文件的最大限制时,会堵塞生产值,但消费者可以正常连接消费,当消费掉一些消息后,又腾出一些文件的空间后,生产者可以继续发送消息,服务自动回复正常。
  2. 当大量生产非持久化消息并写入到临时文件中,在达到最大值时,生产者阻塞,消费者正常连接但不能消费,或慢速消费直到停止消费。整个系统可连接,但无法提供服务,就这样挂了。

注:

使用延迟队列可以一定程度上保证发布的服务一定会被调用到

建议: 尽量不要使用非持久化消息,非要用的话,降临时文件限制尽可能的调大。

猜你喜欢

转载自blog.csdn.net/weixin_42405670/article/details/89474103