Rabbitmq消息队列:Route路由模式简单应用

发布时间 2023-11-03 11:26:08作者: 我命倾尘

一、生产者

  在发布订阅模式的代码基础上,进行一定的调整,将声明交换机的路由模式调整为direct路由模式

  这个时候需要用到路由key,类似于给消息用来分类的标签

  分别发送三条消息,发向GetOne、GetTwo和GetThree三个路由key:

//声明交换机(类型direct->路由模式)
channel.exchangeDeclare(EXCHANGE,"direct");
//发送消息到交换机(交换机无法持久化,如果消息没有及时接收,重启后容易丢失数据)
channel.basicPublish(EXCHANGE,"GetOne",null,"这是发送给GetOne的消息".getBytes());
channel.basicPublish(EXCHANGE,"GetTwo",null,"这是发送给GetTwo的消息".getBytes());
channel.basicPublish(EXCHANGE,"GetThree",null,"这是发送给GetThree的消息".getBytes());

二、消费者

  定义两个消费者GetOne、GetTwo,在发布订阅模式的代码基础上,进行一定的调整。

  绑定交换机时,第二个参数附加需要的路由key,如果需要绑定多个,就分多次绑定

  GetOne绑了GetOne、GetThree两个路由key,如下:

//将队列绑定到交换机(第二个参数是路由的key,需要多个的话就绑多个)
channel.queueBind(QUEUE,EXCHANGE,"GetOne");
channel.queueBind(QUEUE,EXCHANGE,"GetThree");

  GetTwo绑了GetTwo一个路由key,如下:

//将队列绑定到交换机
channel.queueBind(QUEUE,EXCHANGE,"GetTwo");

三、运行结果

  首页也是先启动生产者,初始化需要用到的交换机test-route。

  

  先后依次启动消费者GetOne和GetTwo,再次启动生产者,结果如下: