rabbitmq中,direct交换机会提供一个BindingKey,与之对应的是发布消息时候指定的routingKey
在向交换机发布消息的时候,direct会根据附带的routingKey去找在绑定时候队列的BindingKey,如果二者匹配,则向queue推送消息
- 首先我们需要在rabbitmq-web端进行direct交换机的创建与绑定操作,同时我们需要指定bandingkey
- 我们创建两个direct_queue1&direct_queue2
- 在项目中进行代码实现
首先进行listener的添加(参考fanout)
@RabbitListener(queues = "direct_queue1")
public void directQ1(String msg) throws InterruptedException {
System.out.println("direct1接收到的msg:"+msg);
Thread.sleep(20);
}
@RabbitListener(queues = "direct_queue2")
public void directQ2(String msg) throws InterruptedException {
System.out.println("direct2接收到的msg:"+msg);
Thread.sleep(20);
}
然后进行springTest的测试
@Test
void testSendMsgToFanout(){
String exchangeName = "cybg.direct";
String msg = "direct everyone";
rabbitTemplate.convertAndSend(exchangeName,"2",msg);
}
我们在这次需要指定routingkey,就是我们当时上面约定好的bindingkey
运行并查看控制台可以发现,消费者已经拿到了指定队列中的消息