1.ActiveMQ是什么
ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线。在ActiveMQ官网,版本已经更新到5.15.0版本。
2.ActiveMQ的用途
ActiveMQ用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息。把它应用到实际的业务需求中的话,我们可以在特定的时候利用生产者生成一消息,并进行发送,对应的消费者在接收到对应的消息后去完成对应的业务逻辑。
3.ActiveMQ消息传递的分类
消息的传递有两种类型:
一种是点对点模式的,即一个生产者和一个消费者一一对应;
一种是发布/订阅模式,即一个生产者产生消息并进行发送后,可以由多个消费者进行接收。
点对点模式:需要一个生产者发送消息到队列版块(Queue)中,只能有一个消费者从该队列(Queue)中接受该消息。生产者发送消息时,消费者不需要处于运行状态。
发布\订阅模式:需要一个生产者发送消息到主题版块(Topic)中,可以有多个消费者订阅该版块来接受消息。消费者接受消息时,必须处于运行状态,而且只能接受运行之后的消息
。
4.应用实例举例:
(1)更新商品信息
在电商[后台商品管理系统]中,维护商品信息,执行变更商品信息操作时,除了要将变更后的数据更新到数据库,同时也需要将变更后的数据,更新到索引库。
功能分析:
需要保证更新索引操作时,不能影响原有业务,所以使用activemq消息中间件进行异步通信。
消息发送,选用发布\订阅模式,这种消息可以有多个消费者接收消息。因为在商品信息变更时,还需要进行缓存同步等其他操作。
具体操作:
在后台商品系统管理工程中的添加商品方法里面添加发送消息逻辑。
a)消息目标:Topic。
b)消息内容:商品ID,使用TextMessage
(2)实时同步交易数据到结算系统
电商交易系统产生的交易数据时,不仅需要将交易数据保存到电商交易系统对应的数据库中,还需要实时将产生的交易数据,同步到结算系统数据库中。
功能分析:
同步交易数据到结算系统的过程,不能影响电商交易系统原有业务,所以同样使用ActivityMQ消息中间件来进行异步通信.
消息发送,选用点对点模式。结算系统采用分布式部署,只要有一个消费者接收消息即可。
具体操作:
消息目标:Queue;
消息内容:json格式,交易数据,使用TextMessage。
5.activeMQ消息消费不成功怎么办?
Activemq有两种通信方式,点到点形式和发布订阅模式。
点到点模式,如果消息发送不成功此消息默认会保存到activemq服务端直到有消费者将其消费
,所以此时消息是不会丢失的。
发布订阅模式,默认情况下只通知一次,如果接收不到此消息就没有了
。这种场景只适用于对消息送达率要求不高的情况。
如果要求消息必须送达不可以丢失的话,需要配置持久订阅
。每个订阅端定义一个id,在订阅是向activemq注册
。发布消息和接收消息时需要配置发送模式为持久化。此时如果客户端接收不到消息,消息会持久化到服务端,直到客户端正常接收后为止。