RabbitMQ消息服务中Topic类型交换机根据通配符路由消息,*代表一个单词,#代表代表0或多个单词。

 
生产者

消费者

 
代码
Producer.java
 
package com.test.topic2;
 
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;
 
public class Producer {
public static void main(String[] args)
{
try
{
//1.
ConnectionFactory cf = new ConnectionFactory();
cf.setUsername("admin");
cf.setPassword("admin");
cf.setHost("192.168.169.142");
cf.setPort(5672);
//2.
Connection con = cf.newConnection();
//3.
Channel channel = con.createChannel();
//4.
String queue1 = "topic_queue1";
String queue2 = "topic_queue2";
String queue3 = "topic_queue3";
//5.
channel.queueDeclare(queue1, false, false, false, null);
channel.queueDeclare(queue2, false, false, false, null);
channel.queueDeclare(queue3, false, false, false, null);
//6.
String exg = "topic_exg";
channel.exchangeDeclare(exg, "topic", false);
//7.
channel.queueBind(queue1, exg, "*.test");//Binding key
channel.queueBind(queue2, exg, "#.test");//Binding key
channel.queueBind(queue3, exg, "my.user.test");//Binding
key
//8.
String message = "Hello Topic Message";
channel.basicPublish(exg, "user.test",
MessageProperties.TEXT_PLAIN, message.getBytes());
//9.
channel.close();
con.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
 
Customer.java
 
package com.test.topic2;
 
import java.io.IOException;
 
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.AMQP.BasicProperties;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Consumer;
import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.ShutdownSignalException;
 
public class Customer implements
com.rabbitmq.client.Consumer{
public static void main(String[] args)
{
try
{
//1.
ConnectionFactory cf = new ConnectionFactory();
cf.setUsername("admin");
cf.setPassword("admin");
cf.setHost("192.168.169.142");
cf.setPort(5672);
//2.
Connection con = cf.newConnection();
//3.
Channel channel = con.createChannel();
//4.
String queue1 = "topic_queue1";
channel.queueDeclare(queue1, false, false, false, null);
com.test.topic2.Customer cust = new
com.test.topic2.Customer();
channel.basicConsume(queue1, true, cust);
 
Thread.sleep(5000);
channel.close();
con.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
 
@Override
public void handleConsumeOk(String consumerTag) {
// TODO Auto-generated method stub
}
 
@Override
public void handleCancelOk(String consumerTag) {
// TODO Auto-generated method stub
}
 
@Override
public void handleCancel(String consumerTag) throws
IOException {
// TODO Auto-generated method stub
}
 
@Override
public void handleDelivery(java.lang.String consumerTag,
     
      Envelope
envelope,
     
     
AMQP.BasicProperties properties,
     
      byte[]
body) throws IOException {
// TODO Auto-generated method stub
System.out.println("receive=" + new String(body));
}
 
@Override
public void handleShutdownSignal(String consumerTag,
ShutdownSignalException sig) {
// TODO Auto-generated method stub
}
 
@Override
public void handleRecoverOk(String consumerTag) {
// TODO Auto-generated method stub
}
}
 

9.RabbitMQ Topic类型交换机的更多相关文章

  1. 10.RabbitMQ Fanout类型交换机

    Fanout类型交换机忽略Routing Key,它将消息传递到所有与它绑定的队列上.       Producer.java package com.test.fanout;   import co ...

  2. RabbitMQ学习总结 第六篇:Topic类型的exchange

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

  3. 如何从40亿整数中找到不存在的一个 webservice Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库 WPF实战案例-打印 RabbitMQ与.net core(五) topic类型 与 headers类型 的Exchange

    如何从40亿整数中找到不存在的一个 前言 给定一个最多包含40亿个随机排列的32位的顺序整数的顺序文件,找出一个不在文件中的32位整数.(在文件中至少确实一个这样的数-为什么?).在具有足够内存的情况 ...

  4. RabbitMQ与.net core(五) topic类型 与 headers类型 的Exchange

    1.topic类型的Exchange 我们之前说过Topic类型的Exchange是direct类型的模糊查询模式,可以通过routkey来实现模糊消费message,topic的模糊匹配有两种模式: ...

  5. rabbitMQ学习笔记(六) topic类型消息。

    上一节中使用了消息路由,消费者可以选择性的接收消息. 但是这样还是不够灵活. 比如某个消费者要订阅娱乐新闻消息 . 包括新浪.网易.腾讯的娱乐新闻.那么消费者就需要绑定三次,分别绑定这三个网站的消息类 ...

  6. RabbitMQ入门学习系列(六) Exchange的Topic类型

    快速阅读 介绍exchange的topic类型,和Direct类型相似,但是增加了"."和"#"的匹配.比Direct类型灵活 Topic消息类型 特点是:to ...

  7. 【RabbitMQ学习之二】RabbitMQ四种交换机模式应用

    环境 win7 rabbitmq-server-3.7.17 Erlang 22.1 一.概念1.队列队列用于临时存储消息和转发消息.队列类型有两种,即时队列和延时队列. 即时队列:队列中的消息会被立 ...

  8. 四、RabbitMQ Exchange类型

    RabbitMQ整体上是一个生产者与消费者模型,主要负责接收.存储和转发消息.可以把消息传递的过程想象成:当你将一个包裹送到邮局,邮局会暂存并最终将邮件通过邮递员送到收件人的手上,RabbitMQ就好 ...

  9. RabbitMQ Topic exchange

    Topic exchange topic与之前的每个类型都不同(ps:废话每个都是不同的).Topic解决了我们另一个需求.举个例子,有一个做资讯的公司,他们会收集各种科技公司的动态并且第一时间转发出 ...

随机推荐

  1. SQL 按关键字排序

    SQL ORDER BY Keyword(按关键字排序) ORDER BY 关键字用于对结果集进行排序. SQL ORDER BY 关键字 ORDER BY 关键字用于按升序或降序对结果集进行排序. ...

  2. Dart编程实例 - 类型测试操作符is

    Dart编程实例 - 类型测试操作符is void main() { int n = 2; print(n is int); } 本文转自:http://codingdict.com/article/ ...

  3. php-数据库-分页类-上传类

    config.ini.php <?php header("content-type:text/html;charset=utf-8"); //项目的根目录 define(&q ...

  4. 折半枚举——poj3977

    暴力搜索超时,但是折半后两部分状态支持合并的情况,可用折半枚举算法 poj3977 给一个序列a[],从里面找到k个数,使其和的绝对值最小 经典折半枚举法+二分解决,对于前一半数开一个map,map[ ...

  5. delphi 下载

    获取网络文件大小 //delphi 获取网络文件大小 function GetUrlFileSize(aURL: string): integer; var FileSize: integer; va ...

  6. mysql恢复root密码

    1.停止MySQL服务: // mysqld stopnet stop mysql 2.跳过权限检查启动MySQL(此时不要关闭CMD窗口):   // mysqld -nt –skip-grant- ...

  7. 火狐RESTClient和HttpRequester, Chrome的Postman使用详解

    Chrome下有著名的Postman,那火狐也有它的左膀右臂,那就是RESTClient和HttpRequester.这两款工具都是火狐的插件,主要用来模拟发送HTTP请求,HTTP请求最常用的两种方 ...

  8. Zabbix 历史数据存储到 Elasticsearch

    Zabbix 历史数据存储到 Elasticsearch Zabbix 3.4.6 版本开始支持历史数据存储到 Elasticsearch, 早就想测试这个功能,最近有个需求需保存 zabbix 的历 ...

  9. IDEA上传项目到SVN

    1.打开IDEA ,上面工具栏选择VCS 选择把项目交给SVN管理 2.选择SVN 3.选择SVN管理后可以看到项目变这个颜色 4.右键项目选择如下 5.点击绿色的+号,选择一个SVN仓库的地址,下面 ...

  10. CTF杂项思路工具分享————2019/5/30

    分享碰到的一些奇奇怪怪的杂项解题方式: 键盘坐标密码: 题目给出一段字符串:11 21 31 18 27 33 34 对照上面的表格,就可以很清晰的看出来密文为:QAZIJCV 猪圈码: 题目为: 一 ...