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)消息通讯

如:消息室,微博等

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,845评论 18 139
  • 以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统)。 本次分享...
    文档随手记阅读 1,903评论 0 28
  • 一、 消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题。实现高性能...
    步积阅读 57,065评论 10 138
  • 1 消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,...
    Bobby0322阅读 10,913评论 0 24
  • 一只黑色的猫 走在黑色的轨迹上 旁边黑色的河流里 游过一群黑色的鱼 黑色的猫跳进黑色的水里去捉黑色的鱼 黑色的水溅...
    先生丿尹阅读 439评论 0 5