2019独角兽企业重金招聘Python工程师标准>>>

package com.shi.topic;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.ShutdownSignalException;
import com.rabbitmq.client.QueueingConsumer.Delivery;
import com.shi.util.RabbitMqUtils;/*** 通配符模式  - topic* @author SHF* @version 创建时间:2018年7月4日  下午5:53:29*/
public class TopicTest {//交换机名称private final static String EXCHANGE_NAME = "exchange_topic";//路由 keyprivate final static String KEY_1 ="a.1";private final static String KEY_2 ="key.*";private final static String KEY_3 ="#.#";//队列名称private final static String QUEUE_1 ="queue_topic_1";private final static String QUEUE_2 ="queue_topic_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, "topic");//3 消息内容String message = " 施爷 通配符模式 topic 向你发送了一条消息....";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/1840257

通配符模式 topic相关推荐

  1. RabbitMQ的Topics 通配符模式(Topic)

    RabbitMQ的Topics 通配符模式(Topic) 模式说明 Topic 类型与 Direct 相比,都是可以根据 RoutingKey 把消息路由到不同的队列.只不过 Topic 类型Exch ...

  2. RabbitMQ消息队列(六):SpringBoot整合之通配符模式

    RabbitMQ消息队列(六):SpringBoot整合之通配符模式 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AeZQrNHS-1660220618697)(E: ...

  3. RabbitMQ通配符模式

    通配符模式 一个消息发送者,发送消息 每个消息接收者,都已一个独立的队列 消息会发送到交换机,由交换机发送到队列 根据key,模糊匹配,来接收消息 Send 发送者 package cn.itcast ...

  4. (需求实战_进阶_04)SSM集成RabbitMQ 通配符模式 关键代码讲解、开发、测试

    背景: 为了减轻服务器的压力,现在原有项目的基础上集成消息队列来异步处理消息! 此项目是企业真实需求,项目的代码属于线上生产代码,直接用于生产即可! 此项目采用MQ发送消息模式为:通配符模式,如果对R ...

  5. RabbitMQ-主题模式Topic

    文章目录 RabbitMQ-主题模式Topic Topic Exchange 生产者 消费者1 消费者2 RabbitMQ-主题模式Topic Topic Exchange  将路由和某个模式匹配,# ...

  6. RabbitMQ的三种模式-----主题模式(Topic)

    主题模式(Topic): 任何发送到Topic Exchange的消息都会被转发到所有关心RouteKey中指定话题的Queue 上 1:简述 如上图所示 此类交换器使得来自不同的源头的消息可以到达一 ...

  7. rabbitmq的通配符模式(Topic Exchange)的*和#区别

    符号"#"匹配路由键的一个或多个词,符号"*"匹配路由键的一个词. 例如: topic.#那么这个队列会会接收topic开头的消息 topic.*.queue那 ...

  8. 05_RabbitMQ入门案例—fanout模式Direct模式Topic模式

    RabbitMQ入门案例-fanout模式 package com.tian.rabbitmq.routing;import com.rabbitmq.client.Channel; import c ...

  9. dojo发布者订阅者模式(topic.publish/topic.subscribe)

    topic.publish: 用于发布消息,接收任意多个参数,第一参数为要发布的信息名字(唯一标识),如"init/method",其他参数为传递给订阅回调函数的参数. topic ...

最新文章

  1. WPF Layout System
  2. “我想在 CSDN 写小说” 评论亮了 | 每日趣闻
  3. linux socket通信tcp,基于TCP协议的socket通信
  4. LeetCode_脑筋急转弯
  5. 大话数据结构 01 :顺序线性表
  6. 一个领导力培训的游戏练习
  7. java list 获取索引_java – 获取arrayList中元素的索引
  8. 18 SD配置-主数据-定义公用分销渠道
  9. OpenCV-尺寸调整cv::resize
  10. linux mysql-5.7.13 源码安装,Linux下安装-配置-mysql-5.7.13
  11. 从0开始安卓开发之路_Android Studio安装包
  12. 拓端tecdat|python对网络图networkx进行社区检测和彩色绘图
  13. easyui获取图片路径_Python玩转图片九宫格
  14. Iper3打流时所支持的UDP协议是真的UDP吗?
  15. 如何设置无线路由器提高迅雷下载速度
  16. Oracle 按日期分组
  17. maven指定本地仓库
  18. 电气控制电路图——(1)识读
  19. linux 读取png图片大小,读取 png 图片的宽高信息
  20. Gartner2021新兴技术和趋势影响力雷达图:四项颇具影响力的技术

热门文章

  1. 如何怎样查看电脑操作系统是32位还是64位简便方法
  2. 多伦多大学数理计算机科学,多伦多大学(University of Toronto)_多伦多大学申请条件_津桥留学【23年专注留学服务】...
  3. Android FrameWork底层开发视频
  4. 企业微信开发:使用 JS-SDK 实现图像接口功能(六)
  5. 中国各省市自治区简称都是什么?_百度知道
  6. 【テンプレート】洛谷
  7. vue中使用iview UI
  8. 全流程调度——Azkaban入门与进阶
  9. 【Vulnhub系列】DC3
  10. 注意力机制blogs