【RabbitMQ笔记】交换器类型和消息协议

199 阅读2分钟

一、交换器

RabbitMQ 常用的交换器类型有 fanout、direct、topic、headers四种,AMQP协议里还提到另外两种:System 和自定义。

  • fanout,会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中
  • direct,路由规则很简单,会把消息路由到那些 BindingKey 和 RoutingKey 完全匹配的队列中
  • topic
    • 与direct相似,支持规则匹配
    • 以点号“.”分割字符串
    • “*”、“#”用于模糊匹配
  • headers,不依赖路由键的匹配规则来路由消息,而是根据发送的消息内容中的 headers 属性进行匹配。性能那个很差,也不实用,所以很少用到

二、消息协议

  1. STOMP

Simple(or Streaming)Text Oriented Messaging Protocol,简单(流)文本面向消息协议,它提供了一个可互操作的连接格式,运行 STOMP 客户端与任意 STOMP 消息代理(Broker)进行交互。STOMP 协议由于设计过于简单,易于开发客户端,因此在多种语言和平台上得到广泛应用。

  1. MQTT

Message Queuing Telemetry Transport,消息队列遥测传输,是 IBM 开发的一个即时通信协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有物联网和外部连接起来,被用来当作传感器和制动器的通信协议。

  1. AMQP(Advanced Message Queuing Protocol)

协议本身包含三层:

  • Module Layer:最高层,定义一些共客户端调用的命令,客户端可以利用这些命令实现自己的业务逻辑
  • Session Layer:中间层,主要为客户端与服务端之间的通信提供可靠性同步机制和错误处理。
  • Trasport Layer:最底层,主要传输二进制数据流,提供帧的处理、信道复用、错误检测和数据表示等 通信协议,都会涉及报文交互