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相关推荐

  1. RabbitMQ的Routing 路由模式(Direct)

    RabbitMQ的Routing 路由模式 模式说明: 队列与交换机的绑定,不能是任意绑定了,而是要指定一个 RoutingKey(路由key) 消息的发送方在向 Exchange 发送消息时,也必须 ...

  2. RabbitMQ路由模式(direct)

    1.什么是路由模式(direct) 路由模式是在使用交换机的同时,生产者指定路由发送数据,消费者绑定路由接受数据.与发布/订阅模式不同的是,发布/订阅模式只要是绑定了交换机的队列都会收到生产者向交换机 ...

  3. RabbitMQ路由模式

    路由模式 一个生产者,发送消息 每个消费者,都有一个独立的队列 消息发送到交换机,交换机发送到每个队列 根据key,是否相等,来接收消息 Send 生产者 package cn.itcast.rabb ...

  4. 【转】RabbitMQ六种队列模式-4.路由模式

    前言 RabbitMQ六种队列模式-简单队列 RabbitMQ六种队列模式-工作队列 RabbitMQ六种队列模式-发布订阅 RabbitMQ六种队列模式-路由模式 [本文] RabbitMQ六种队列 ...

  5. RabbitMQ(六) Routing路由模式

    概述 所谓RabbitMq中路由模式(Routing)为我们在将发送消息队列以及接收消息队列(queue)绑定到交换机(exchange)时指定了一个RoutingKey.然后我们在通过连接信道向交换 ...

  6. 【RabbitMQ】基础四:路由模式(Routing)

    [RabbitMQ]基础四:路由模式(Routing) 1. 路由模式说明 2. 代码示例 2.1 生产者 2.2 消费者1 2.3 消费者2 2.4 测试 3. 总结 1. 路由模式说明 路由模式特 ...

  7. 五、交换机 与 发布/订阅模式、路由模式、主题模式

    RabbitMQ目录 文章目录 交换机 与 发布/订阅模式.路由模式.主题模式 1.Exchanges(交换机) 1.1. Exchanges 概念 1.2. Exchanges 的类型 1.3. 无 ...

  8. 【夏目鬼鬼分享】RabbitMQ路由模式

    路由模式 路由模式是可以根据路由键选择性给多个消费者发送消息的模式,它包含一个生产者.两个消费者.两个队列和一个交换机.两个消费者同时绑定到不同的队列上去,两个队列通过路由键绑定到交换机上去,生产者发 ...

  9. RabbitMQ系列笔记广播模式和路由模式

    导语 上一节介绍了简单的工作模式,即一个队列可以被多个消费者进行消费,只有一条消息被送到消费者,采用公平调度的方式,在以往的例子中似乎我们还没用到交换器进行发送消息,我们都知道,往队列里发送消息,是需 ...

最新文章

  1. [转]JDK里的设计模式
  2. error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
  3. 学习 TTreeView [7] - Insert、Delete
  4. python从mysql导出大量数据_python批量导出导入MySQL用户的方法
  5. HHT变换基本理论-学习笔记
  6. 解决网页中不能复制文字的问题
  7. 趣挨踢 | 那些出现在电影或电视剧中的精彩代码,你认出来几个?
  8. 适用于Photoshop,Xd和Sketch的UI套件
  9. php删除树结构文件,树型结构列出目录中所有文件的php代码
  10. 计算机网络技术-----==一些东西
  11. ELK详解(十七)——filebeat输出到Redis和Elasticsearch实战
  12. Linux的ip_conntrack半景
  13. 库卡六轴机器人编程手册_工业机器人(ABB、库卡、安川)编程专业教材!
  14. PHP+MySQL制作简单动态网站(附详细注释+源码)
  15. [BZOJ2286] [Sdoi2011]消耗战
  16. Shape添加阴影效果
  17. 可悲、可叹、可怜的TD-sdma
  18. ValueError:only one element tensors can be converted to Python scalars解决办法
  19. Unity3D 材质球设置参数无效果的解决方法
  20. 【Python】完美采集淘宝数据(附完整源代码和视频教程)

热门文章

  1. GoogleTest单元测试学习
  2. 金额转换(数字转换中文老写)
  3. css3 3d关键点 淘宝购物节的3D效果 如何实现的 h5
  4. 阅读小车循迹论文笔记:灰度传感器、仿生处理器、路径跟踪机制()
  5. Echarts 折线图间隔显示数据
  6. amazon linux 安装nginx,amazon-web-services – 如何在amazon linux disto上安装nginx 1.9.15
  7. 【python正则表达式匹配获取文本中的11位手机号码】
  8. 第三次作业 --必应词典 测试评价
  9. Java基础72问:java面试题刷题软件
  10. 【网络】报文封装整体结构