Rabbitmq消息队列:Route路由模式简单应用
一、生产者
在发布订阅模式的代码基础上,进行一定的调整,将声明交换机的路由模式调整为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,再次启动生产者,结果如下: