路由模式 - direct
2019独角兽企业重金招聘Python工程师标准>>>
package com.shi.rout;import java.io.IOException;
import java.util.concurrent.TimeoutException;import org.junit.Test;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConsumerCancelledException;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.QueueingConsumer.Delivery;
import com.rabbitmq.client.ShutdownSignalException;
import com.shi.util.RabbitMqUtils;/*** 路由模式 direct* @author SHF* @version 创建时间:2018年7月4日 下午4:17:20*/
public class RoutTest {//交换机名称private final static String EXCHANGE_NAME = "exchange_direct";//路由 keyprivate final static String KEY_1 ="a";private final static String KEY_2 ="b";private final static String KEY_3 ="a";//队列名称private final static String QUEUE_1 ="queue_direct_1";private final static String QUEUE_2 ="queue_direct_2";/*** 生产者 - 路由模式* KEY_1 ="a";* @author SHF* @version 创建时间:2018年7月4日 下午4:20:39* @throws TimeoutException * @throws IOException */@Testpublic void send() throws IOException, TimeoutException {//1 获取链接及mq 通道Connection connection = RabbitMqUtils.getConnection();Channel channel = connection.createChannel();//2 声明exchangechannel.exchangeDeclare(EXCHANGE_NAME, "direct");//3 消息内容String message = " 施爷 路由模式direct 向你发送了一条消息....";channel.basicPublish(EXCHANGE_NAME, KEY_1, null, message.getBytes());System.out.println(" [x] sent:"+message);//4关闭通道及连接channel.close();connection.close();}/*** 消费者1 - 路由模式* KEY_2 ="b";* @author SHF* @version 创建时间:2018年7月4日 下午4:33:55* @throws TimeoutException * @throws IOException * @throws InterruptedException * @throws ConsumerCancelledException * @throws ShutdownSignalException */@Testpublic void reic1() throws IOException, TimeoutException, ShutdownSignalException, ConsumerCancelledException, InterruptedException {//1 获取连接 及 通道Connection connection = RabbitMqUtils.getConnection();Channel channel = connection.createChannel();//2 声明队列channel.queueDeclare(QUEUE_1, false, false, false, null);//3 绑定交换机,指定路由channel.queueBind(QUEUE_1, EXCHANGE_NAME, KEY_2);//4 同一个服务器只会发送一条消息给消费者channel.basicQos(1);//5 定义队列的消费者QueueingConsumer consumer = new QueueingConsumer(channel);//6 监听队列,手动返回完成channel.basicConsume(QUEUE_1, false,consumer);//7 获取消息while(true) {Delivery delivery = consumer.nextDelivery();String message = new String(delivery.getBody());System.out.println( "[x] reiv1 :" + message);channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);}}/*** 消费者2 - 路由模式* KEY_3 ="a"* @author SHF* @version 创建时间:2018年7月4日 下午4:33:55* @throws TimeoutException * @throws IOException * @throws InterruptedException * @throws ConsumerCancelledException * @throws ShutdownSignalException */@Testpublic void reic2() throws IOException, TimeoutException, ShutdownSignalException, ConsumerCancelledException, InterruptedException {//1 获取连接 及 通道Connection connection = RabbitMqUtils.getConnection();Channel channel = connection.createChannel();//2 声明队列channel.queueDeclare(QUEUE_2, false, false, false, null);//3 绑定交换机,指定路由channel.queueBind(QUEUE_2, EXCHANGE_NAME, KEY_3);//4 同一个服务器只会发送一条消息给消费者channel.basicQos(1);//5 定义队列的消费者QueueingConsumer consumer = new QueueingConsumer(channel);//6 监听队列,手动返回完成channel.basicConsume(QUEUE_2, false,consumer);//7 获取消息while(true) {Delivery delivery = consumer.nextDelivery();String message = new String(delivery.getBody());System.out.println( "[x] reiv2 :" + message);channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);}}}
转载于:https://my.oschina.net/u/3677987/blog/1840204
路由模式 - direct相关推荐
- RabbitMQ的Routing 路由模式(Direct)
RabbitMQ的Routing 路由模式 模式说明: 队列与交换机的绑定,不能是任意绑定了,而是要指定一个 RoutingKey(路由key) 消息的发送方在向 Exchange 发送消息时,也必须 ...
- RabbitMQ路由模式(direct)
1.什么是路由模式(direct) 路由模式是在使用交换机的同时,生产者指定路由发送数据,消费者绑定路由接受数据.与发布/订阅模式不同的是,发布/订阅模式只要是绑定了交换机的队列都会收到生产者向交换机 ...
- RabbitMQ路由模式
路由模式 一个生产者,发送消息 每个消费者,都有一个独立的队列 消息发送到交换机,交换机发送到每个队列 根据key,是否相等,来接收消息 Send 生产者 package cn.itcast.rabb ...
- 【转】RabbitMQ六种队列模式-4.路由模式
前言 RabbitMQ六种队列模式-简单队列 RabbitMQ六种队列模式-工作队列 RabbitMQ六种队列模式-发布订阅 RabbitMQ六种队列模式-路由模式 [本文] RabbitMQ六种队列 ...
- RabbitMQ(六) Routing路由模式
概述 所谓RabbitMq中路由模式(Routing)为我们在将发送消息队列以及接收消息队列(queue)绑定到交换机(exchange)时指定了一个RoutingKey.然后我们在通过连接信道向交换 ...
- 【RabbitMQ】基础四:路由模式(Routing)
[RabbitMQ]基础四:路由模式(Routing) 1. 路由模式说明 2. 代码示例 2.1 生产者 2.2 消费者1 2.3 消费者2 2.4 测试 3. 总结 1. 路由模式说明 路由模式特 ...
- 五、交换机 与 发布/订阅模式、路由模式、主题模式
RabbitMQ目录 文章目录 交换机 与 发布/订阅模式.路由模式.主题模式 1.Exchanges(交换机) 1.1. Exchanges 概念 1.2. Exchanges 的类型 1.3. 无 ...
- 【夏目鬼鬼分享】RabbitMQ路由模式
路由模式 路由模式是可以根据路由键选择性给多个消费者发送消息的模式,它包含一个生产者.两个消费者.两个队列和一个交换机.两个消费者同时绑定到不同的队列上去,两个队列通过路由键绑定到交换机上去,生产者发 ...
- RabbitMQ系列笔记广播模式和路由模式
导语 上一节介绍了简单的工作模式,即一个队列可以被多个消费者进行消费,只有一条消息被送到消费者,采用公平调度的方式,在以往的例子中似乎我们还没用到交换器进行发送消息,我们都知道,往队列里发送消息,是需 ...
最新文章
- [转]JDK里的设计模式
- error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
- 学习 TTreeView [7] - Insert、Delete
- python从mysql导出大量数据_python批量导出导入MySQL用户的方法
- HHT变换基本理论-学习笔记
- 解决网页中不能复制文字的问题
- 趣挨踢 | 那些出现在电影或电视剧中的精彩代码,你认出来几个?
- 适用于Photoshop,Xd和Sketch的UI套件
- php删除树结构文件,树型结构列出目录中所有文件的php代码
- 计算机网络技术-----==一些东西
- ELK详解(十七)——filebeat输出到Redis和Elasticsearch实战
- Linux的ip_conntrack半景
- 库卡六轴机器人编程手册_工业机器人(ABB、库卡、安川)编程专业教材!
- PHP+MySQL制作简单动态网站(附详细注释+源码)
- [BZOJ2286] [Sdoi2011]消耗战
- Shape添加阴影效果
- 可悲、可叹、可怜的TD-sdma
- ValueError:only one element tensors can be converted to Python scalars解决办法
- Unity3D 材质球设置参数无效果的解决方法
- 【Python】完美采集淘宝数据(附完整源代码和视频教程)