springAMQP自定义direct交换机进行消息指定推送

rabbitmq中,direct交换机会提供一个BindingKey,与之对应的是发布消息时候指定的routingKey

在向交换机发布消息的时候,direct会根据附带的routingKey去找在绑定时候队列的BindingKey,如果二者匹配,则向queue推送消息

  1. 首先我们需要在rabbitmq-web端进行direct交换机的创建与绑定操作,同时我们需要指定bandingkey
  2. 我们创建两个direct_queue1&direct_queue2
  3. 在项目中进行代码实现

首先进行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

运行并查看控制台可以发现,消费者已经拿到了指定队列中的消息

相关推荐
LDR0063 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术3 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园3 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob3 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享3 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Luminous.3 天前
C语言--day30
c语言·开发语言
何以解忧,唯有..3 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
謓泽3 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言
云水一下3 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
飞天狗1113 天前
零基础JavaWeb入门——第五课第二小节:九大内置对象 · 第2个:response(响应对象)
java·开发语言