测试类111111
配置交换机,队列111
1
@Component
public class ContentInfoSender {
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendContentInfo(ContentInfo contentInfo){
rabbitTemplate.convertAndSend(Constants.CONTENTEXCHANGE,Constants.CONTENTQUEUE + contentInfo.getMsgInfo().getAcceptUserId(),contentInfo);
}
}
topic模式,模糊匹配
发送消息的方法介绍convertAndSend
消息队列测试
消息绑定
创建交换机
创建队列
订单表
第一要去看一下交换机的四种类型。其次,这里面order.#就是所有order开头的都会路由到order-queue
order.*只表示一段模糊匹配
这里为什么都要弄一个static fianl long 。。。回头查一下
路由规则的模糊匹配
order.* 只可以匹配一个.和一个单词
order.#可以匹配多个.和多个单词
发送消息代码
RoutingKey模糊匹配:
order.*匹配一切以"order."开头的、后面不带点的路由名称(order.123,order.abc等)
order.#匹配一个或多个词(order.123.123,order.aaa.bbb等)
实体对象一般都要implements Serializable
Routing key规则:1、order.*(仅仅匹配一个单词,如:order.adc 、order.wer。不能匹配:order.adf.sdf)
2、order.#(可以匹配多个单词)
routingKey 路由键
correlationData 消息的唯一id
Routing key : order. * order.# 区别
order.* 只支持 order.abc
order.# 支持 order.abc.1234
Direct exchange(直连交换机)
直连型交换机(direct exchange)是根据消息携带的路由键(routing key)将消息投递给对应队列的,步骤如下:
将一个队列绑定到某个交换机上,同时赋予该绑定一个路由键(routing key)
当一个携带着路由值为R的消息被发送给直连交换机时,交换机会把它路由给绑定值同样为R的队列。
Fanout exchange(扇型交换机)
扇型交换机(funout exchange)将消息路由给绑定到它身上的所有队列。不同于直连交换机,路由键在此类型上不启任务作用。如果N个队列绑定到某个扇型交换机上,当有消息发送给此扇型交换机时,交换机会将消息的发送给这所有的N个队列
Topic exchange(主题交换机)
主题交换机(topic exchanges)中,队列通过路由键绑定到交换机上,然后,交换机根据消息里的路由值,将消息路由给一个或多个绑定队列。
扇型交换机和主题交换机异同:
对于扇型交换机路由键是没有意义的,只要有消息,它都发送到它绑定的所有队列上
对于主题交换机,路由规则由路由键决定,只有满足路由键的规则,消息才可以路由到对应的队列上
Headers exchange(头交换机)
类似主题交换机,但是头交换机使用多个消息属性来代替路由键建立路由规则。通过判断消息头的值能否与指定的绑定相匹配来确立路由规则。
此交换机有个重要参数:”x-match”
当”x-match”为“any”时,消息头的任意一个值被匹配就可以满足条件
当”x-match”设置为“all”的时候,就需要消息头的所有值都匹配成功
Routing路由key匹配规则 *和# 的区别 *号匹配一个点后 的,例如Oder.*
,但是oder.12.a z第二个点就不匹配了,#号可以匹配
-测试用例
OrderSender
Order实体类
t_order表
消息发送实现方法
order实体对象