JMS
先来了解下什么叫MOM
MOM(Message-oriented Middleware) 面向消息的中间件 。分布式系统的集成:利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信进行分布式系统的集成。
-
定义
- Java Message Service
- 是一个java平台关于MOM(消息中间件)的api,用于两个程序之间,或分布式系统中发送消息,进行异步通讯。
-
优势
- Asynchronous 异步
- 是一个异步的消息服务
- 客户端获取消息的时候,不是主动获取,而是消息会主动发送给客户端
- 可靠 Reliable
- 会保证消息只被消费一次
- Asynchronous 异步
-
消费模型
- p2p 点对点
- publish/subscribe 发布订阅
-
规范
-
Message组成
- Header 消息头
- properties 属性 主要是对消息头中属性的补充
- body 消息体 用户自定义 包括多种 TextMessage StreamMessage MapMessage ObjectMessage BytesMessage
ActiveMq
优势
- 加快系统响应 系统分布式解耦,异步并行,加快系统对用户请求的访问速度
- 降低系统耦合 子系统间通过队列通信,避免相互耦合和影响
- 数据缓存 消息队列提供亿级的消息堆积能力
activemq就是实现了jms的一种provider
优化 及参数详解
- 消息堆积
生产者
生产者发送的消息 主要分为两种 PERSISTENT Message(持久化)和NON_PERSISTENT
发送NON_PERSISTENT消息发送方默认使用异步方式。异步发送并非绝对的异步,发送者会在发送一定大小之后等待回执。
消费者
预取数量 prefetchSize
确认机制 ACK 用JMS中的acknowledge来设置
死信
多次消费都失败 那就放入一个异常队列 等待处理