activeMQ了解一下(一)

正式介绍activeMQ之前,让我们先了解几个名词

一、JMS消息服务

即java的消息服务,JMS的客户端之间通过JMS进行异步的消息传输

1.消息模型
P2P point to point 点对点模式
Pub/Sub publish/Subscribe 发布订阅模式
p2p.png

每个消息被发送到队列,接收者从队列获取消息。队列里一直保留消息,直到消息被消费或超时。

P2P特点:
  • 每个消息只能有一个消费者,一旦消费,即不在队列中
  • 发送者和接收者不存在依赖性
  • 接收者在接收成功后,要向队列应答成功。无特殊配置时,默认自动commit
使用场景:希望每个消息都被成功处理,且只有一个消费者
publish_subscribe.png

多个发布者将消息发送到主题,系统将消息传递给多个订阅者

Pub/Sub特点
  • 每个消息可以有多个消费者
  • 发布和订阅有时间上依赖性,针对某个topic,要先创建一个订阅者才能消费消息,且订阅者必须保持运行状态
  • 为缓和这种严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。
使用场景:

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

2.消息如何消费

1).同步:调用使用receive方法,此方法在接收到消息之前会一直阻塞
2).异步:注册消息监听器,消息到达时,系统自动调用监听器的onMessage方法

二,消息队列中间件

1,应用场景
(1) 异步处理

例如:注册后发送短信、邮件,下单后调用第三方支付接口等,将需要执行的消息放入队列,客户端会迅速收到响应,有利于用户体验

(2)应用解耦

例如:在业务复杂的项目里,一个请求涉及跨系统,跨接口操作,当第三方、第四方系统网络异常等时,导致请求失败,耦合太强。

(3)流量削锋

例如:秒杀活动,秒杀时不做业务处理,交给消息队列,并限制消息队列的长度,可有效控制参与人数并防止高流量压垮应用

(4)日志处理

例如:kafka应用,日志采集写入kafka队列,此队列复杂接收,存储和转发,订阅者订阅kafka里的日志数据

(5)消息通讯

如:消息室,微博等

你可能感兴趣的:(activeMQ了解一下(一))