目录
- 系统间通信方式
- 从队列到消息服务
- 消息模式与消息协议
- ActiveMQ消息中间件
- ActiveMQ使用示例
1. 系统间通信方式
系统间通信方式
- 基于文件
- 基于共享内存
- 基于RPC
- 基于Socket
- 基于数据库
- 基于RPC
我们期望有一种通信方式:
- 可以实现异步的消息通信
- 可以简化参与各方的复杂依赖关系
- 可以在请求量很大的时候,缓冲一下 > 类比线程池里的Queue
- 某些情况下能保障消息的可靠性,甚至顺序
2. 从队列到消息服务
MQ的四大作用
对比其他通信模式,MQ的优势在于:
- 异步通信:异步通信,减少线程等待,特别是处理批量等大事务、耗时操作。
- 系统解耦:系统不直接调用,降低依赖,特别是不在线也能保持通信最终完成。
- 削峰平谷:压力大的时候,缓冲部分请求消息,类似于背压处理。
- 可靠通信:提供多种消息模式、服务质量、顺序保障等。
3. 消息模式与消息协议
消息处理的保障
三种QoS(注意:这是消息语义的,不是业务语义的):
- At most once,至多一次,消息可能丢失但是不会重复发送;
- At least once,至少一次,消息不会丢失,但是可能会重复;
- Exactly once,精确一次,每条消息肯定会被传输一次且仅一次。
消息处理的事务性: - 通过确认机制实现事务性;
- 可以被事务管理器管理,甚至可以支持XA。
消息有序性
同一个Topic或Queue的消息,保障按顺序投递。
注意:如果做了消息分区,或者批量预取之类的操作,可能就没有顺序了。
《企业集成模式》 可以认为是 SOA/ESB/MQ等 理论基础
消息协议
STOMP
JMS
AMQP
MQTT
XMPP
Open Messaging