activeMQ

来源:互联网 发布:热血沙尘源码 编辑:程序博客网 时间:2024/05/21 17:49

ActiveMQ消息队列的使用

ActiveMQ应用场景分析

1.用户注册,重点是用户信息数据库保存,发信息,发右键,增加业务处理复杂度,这时候使用MQ,讲发短信,发邮箱,通知MQ,由另外的服务平台完成

2,搜索平台,缓存平台

查询数据,建立缓存,索引,不从数据库查询,从缓存或者索引库查询. 当增加,修改,删除数据的时候,发送消息给MQ,缓存平台,索引平台 从MQ获取到这个消息,更新缓存或者索引.


ActiveMQ使用的是标准生产者和消费者模型

有两种数据结构  Queue   topic

1.queue队列  生产者生产了一个消息,只能由一个消费者进行消费,

2.Topic话题  生产者生产了一个消息,可以由多个消费者进行消费


编写MQ消费者代码

第一种,使用MessageConsumer完成消费


查看控制台,  发现信息已经被消费


第二种: 使用监听器,监听消息的内容,进行消费


消息队列应用场景

异步处理: 将不是必须的业务逻辑,异步处理,节省事件

应用解耦 :   假如,在下单时库存系统不能正常使用,也不影响正常下单,因为下单后,系统订单写入消息队列,就不在关心其他的后续操作了,实现订饭系统与库存系统的应用解耦.

        流量削锋 : 可以控制活动人数    可以缓解短事件内高流量压垮应用

  用户的请求,服务器接收后,首先写入消息队列,加入消息队列长度超过最大数量,则直接抛弃用户请求或跳转到错误页面. 秒杀业务根据消息队列中的请求信息,再做后续处理


JMS消息服务

讲消息队列,就不得不提JMS,JMS API是一个消息服务的标准/规范,允许应用程序组件基于javaEE平台创建,发送,接受和读取消息,他使用分布式通信耦合度更低,消息服务更加可靠遗迹异步性.


消息模型

 在JMS标准中,有两种消息模型

P2P,  点对点模式

P2P包涵三个角色,消息队列,发送者,接受者.每个消息都被发送到一个特定的队列,接受者从队列中获取消息,队列保留着消息,直到他们被消费或者超时

特点:每个消息只有一个消费者(即 一旦被消费,消息就不能在消息队列中)

发送者和接收者之间在时间上没有依赖性,也就是说,当发送者发送了消息之后,不管接受者有没有正在运行,他不会影响到消息被发送到队列

接收者在成功接收消息之后需向队列应答成功 


Publish/Subscribe(Pub/Sub)  发布订阅模式

包含三个角色主题(Topic),发布者(Publisher),订阅者(Subscriber) 多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。

Pub/Sub的特点

· 每个消息可以有多个消费者

· 发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息

· 为了消费消息,订阅者必须保持运行的状态

为了缓和这样严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。

如果希望发送的消息可以不被做任何处理、或者只被一个消费者处理、或者可以被多个消费者处理的话,那么可以采用Pub/Sub模型。







原创粉丝点击