【分布式消息队列】消息队列基础

目录

  1. 系统间通信方式
  2. 从队列到消息服务
  3. 消息模式与消息协议
  4. ActiveMQ消息中间件
  5. 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
【分布式消息队列】消息队列基础
【分布式消息队列】消息队列基础
【分布式消息队列】消息队列基础

上一篇:nginx: [emerg] unknown directive "if($request_method"


下一篇:jquery easyui 中tab页添加其他页面,href与content的用法与区别