接收消息,并根据routing key 转发消息所绑定的队列java
exchange属性服务器
amqp.default routingKey为queue name性能
The default exchange is implicitly bound to every queue, with a routing key equal to the queue name. It is not possible to explicitly bind to, or unbind from the default exchange. It also cannot be deleted.ui
全部发送到direct exchange的message 由routingkey转发到指定 queue编码
注意: Direct模式能够使用Rabbitmq自带的exchange:default exchange。因此不须要将exchange进行任何绑定操做,消息传递时,routingkey 必须彻底匹配才会被队列接收,不然该消息被抛弃。spa
routing key 不必定等于 queue name3d
全部发送到topic exchange的消息由routekey转发到指定topic的queuecode
exchange将eouteKey和某topic进行模糊匹配,此时队列须要绑定一个topic。cdn
模糊匹配
:blog
'#' 匹配多个单词 '*' 匹配一个单词
不处理任何routing key. 只须要将队列绑定到交换机上,无论rk。
转发最快,性能最好。
exchange和exchange、queue之间的链接关系
binding中包含routing key 和其余参数
存储消息数据
持久化
自动删除
服务器和应用程序之间传送的数据
本质上是一段数据:Properties、Payload(Body)组成
经常使用属性:delivery mode 、headers 自定义属性 其余属性:content_type、content_encoding priority 其余属性:correlation_id reply_to expiration message_id
Delivery Mode 2: 持久化投递 1:非持久化投递
Map<String, Object> headers = new HashMap<>();
headers.put("my1", "111");
headers.put("my2", "222");
AMQP.BasicProperties properties = new AMQP.BasicProperties.Builder()
.deliveryMode(2) //持久化
.contentEncoding("UTF-8") //编码方式
.expiration("10000") //发送后10s自动清除
.headers(headers)
.build();
复制代码
虚拟主机 用于进行逻辑隔离 最上层的消息路由
一个virtual host里面能够有若干个exchange queue
但不能用同名的exchange queue