RabbitMQ核心API

265 阅读2分钟

今天来记录一下自己在学习过程中用到的几大核心API:

Exchange:接收消息,并根据路由键转发消息所绑定的队列

交换机属性:
  • Name: 交换机名称
  • Type: 交换机类型direct,topic,fanout,headers
  • Durability: 是否需要持久化,true为持久化
  • Auto Delete: 当最后一个绑定在Exchange上的队列删除后,自动删除该Exchange
  • Internal: 当前Exchange是否用于RabbitMQ内部使用,默认为false
  • Arguments: 扩展参数,用于扩展AMQP协议自制定化使用
Direct Exchange

所有发送到Direct Exchange的消息被转发到RouteKey中指定的Queue

  • 注意:Direct模式可以使用RabbitMQ自带的Exchange:default Exchange,所以不需要将Exchange进行任何的绑定(binding)操作,消息传递时,RouteKey必须完全匹配才会被队列接收,否则该消息会被抛弃。
Topic Exchange

所有发送到Topic Exchange的消息被转发到所有关心RouteKey中指定topic的Queue中

  • Exchange将RouteKey和某Topic进行模糊匹配,此时队列需要绑定一个Topic
  • 注意:可以使用通配符进行模糊匹配
1. “#” 匹配一个或多个词
2. “*” 匹配不多不少一个词
Fanout Exchange
  • 不处理路由键,只需要简单将路由键绑定到交换机上
  • 发送到交换机的消息都会被交换机转发到与该交换机绑定的队列上
  • fanout转发消息是最快的
Binding
  • Exchange和Exchange、Queue之间的连接关系
  • Binding中可以包含RoutingKey或者参数
Queue消息队列
  • 消息队列,实际存储消息数据
  • Durability:是否持久化,Durable:是,Transient:否
  • Auto delete: 如选yes,代表最后一个监听被移除后,该Queue会自动被删除
Message 消息
  • 服务器和应用程序只见传送的数据
  • 本质是就是一段数据,由properties和payload(Body)组成
  • 常用属性:delivery mode,headers(自定义属性)
  • content_type,content_encoding,priority
  • correlation_id,reply_to,expiration,message_id
  • timestamp,type,user_id,app_id,cluster_id
Virtual host
  • 虚拟地址,用于进行逻辑隔离,最上层的消息路由
  • 一个Virtual host里面可以若干个Exchange和Queue
  • 同一个Virtual host里面不能有相同名称的Exchange和Queue