rabbitMQ学习(五)
topic匹配模式,topic能满足匹配结果就行。

发送端:
public class EmitLogTopic {
    private static final String EXCHANGE_NAME = "topic_logs";
    public static void main(String[] argv)
                  throws Exception {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
        channel.exchangeDeclare(EXCHANGE_NAME, "topic");
        String routingKey = getRouting(argv);
        String message = getMessage(argv);
        channel.basicPublish(EXCHANGE_NAME, routingKey, null, message.getBytes());
        System.out.println(" [x] Sent '" + routingKey + "':'" + message + "'");
        connection.close();
    }
    //...
}
接收端:
import com.rabbitmq.client.*;
import java.io.IOException;
public class ReceiveLogsTopic {
  private static final String EXCHANGE_NAME = "topic_logs";
  public static void main(String[] argv) throws Exception {
    ConnectionFactory factory = new ConnectionFactory();
    factory.setHost("localhost");
    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();
    channel.exchangeDeclare(EXCHANGE_NAME, "topic");
    String queueName = channel.queueDeclare().getQueue();
    if (argv.length < 1) {
      System.err.println("Usage: ReceiveLogsTopic [binding_key]...");
      System.exit(1);
    }
    for (String bindingKey : argv) {
      channel.queueBind(queueName, EXCHANGE_NAME, bindingKey);
    }
    System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
    Consumer consumer = new DefaultConsumer(channel) {
      @Override
      public void handleDelivery(String consumerTag, Envelope envelope,
                                 AMQP.BasicProperties properties, byte[] body) throws IOException {
        String message = new String(body, "UTF-8");
        System.out.println(" [x] Received '" + envelope.getRoutingKey() + "':'" + message + "'");
      }
    };
    channel.basicConsume(queueName, true, consumer);
  }
}
rabbitMQ学习(五)的更多相关文章
- RabbitMQ学习总结 第五篇:路由Routing
		
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
 - Redis总结(五)缓存雪崩和缓存穿透等问题    Web API系列(三)统一异常处理    C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步)  C#总结(二)事件Event 介绍总结    C#总结(三)DataGridView增加全选列  Web API系列(二)接口安全和参数校验  RabbitMQ学习系列(六): RabbitMQ 高可用集群
		
Redis总结(五)缓存雪崩和缓存穿透等问题 前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...
 - RabbitMQ学习笔记(五) Topic
		
更多的问题 Direct Exchange帮助我们解决了分类发布与订阅消息的问题,但是Direct Exchange的问题是,它所使用的routingKey是一个简单字符串,这决定了它只能按照一个条件 ...
 - RabbitMQ学习笔记五:RabbitMQ之优先级消息队列
		
RabbitMQ优先级队列注意点: 1.只有当消费者不足,不能及时进行消费的情况下,优先级队列才会生效 2.RabbitMQ3.5以后才支持优先级队列 代码在博客:RabbitMQ学习笔记三:Java ...
 - RabbitMQ学习总结 第三篇:工作队列Work Queue
		
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
 - RabbitMQ学习总结 第一篇:理论篇
		
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
 - RabbitMQ学习总结 第二篇:快速入门HelloWorld
		
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
 - RabbitMQ学习总结 第四篇:发布/订阅 Publish/Subscribe
		
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
 - RabbitMQ学习总结 第六篇:Topic类型的exchange
		
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
 - 官网英文版学习——RabbitMQ学习笔记(十)RabbitMQ集群
		
在第二节我们进行了RabbitMQ的安装,现在我们就RabbitMQ进行集群的搭建进行学习,参考官网地址是:http://www.rabbitmq.com/clustering.html 首先我们来看 ...
 
随机推荐
- DBA-mysql-表
			
create table student( id int(4) not null, name char(20) not null, age int(3) not null default '0', ...
 - VS2013 统计代码量(使用正则表达式)
			
年尾了,需要统计一下今年各个项目的工作量,统计一下各个项目的代码行数: 具体操作步骤如下: 1.选中解决方案,快捷键:Ctrl+Shift+F,打开搜索框,在查找内容中输入正则表达式:"b* ...
 - ubuntu12.04+Elasticsearch2.3.3伪分布式配置,集群状态分片调整
			
目录 [TOC] 1.什么是Elashticsearch 1.1 Elashticsearch介绍 Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎.能够快速搜索数 ...
 - 转载: 查看HADOOP中一个文件有多少块组成及所在机器ip
			
看文件信息 hadoop fsck /user/filename 更详细的 hadoop fsck /user/filename -files -blocks -locations -racks ...
 - 得到APP【每天听本书】微信交流群(每天更新)
			
得到APP[每天听本书]微信交流群,每天更新下载学习资料 添加个人微信号:zhidu10000 进入微信群. “坚持每天读一本书,每天进步1.01,每年进步37.8倍” 2016年书单合辑点此链接,查 ...
 - tomcat war部署根目录下
			
一个很取巧的办法,步骤如下: 1. 删除webapp下所有文件 cd ${TOMAT_HOME}/webapps && rm -rf * 2. copy待部署war到webapps目录 ...
 - 将类数组arguments转化成数组
			
一.将arguments对象绑定到slice方法上 二. 例子: //闭包 二次封装函数 求和 function partialUsingArguments(fn) { var args = Arra ...
 - 读取 java.nio.ByteBuffer 中的字符串(String) 写入方式flash.utils.ByteArray.writeUTF
			
通过研究ByteArray的写入格式以及方法说明,可以发现writeUTF是先使用2位写入字符串的长度,然后在其后写入字符串编码. flash.utils.ByteArray.writeUTF(val ...
 - DNS错误 事件4000 4013
			
DNS 错误事件4000 4013,无法创建活动目录本身的区域 WINDOWS 2003 DNS服务器无法解析 错误ID 4000 DNS 服务器无法打开 Active Directory.这台 DN ...
 - 从click事件理解DOM事件流
			
事件流是用来解释页面上的不同元素接受一个事件的顺序,首先要明确两点: 1.一个事件的影响元素可能不止一个(同心圆理论),但目标元素只有一个. 2.如果这些元素都绑定了相同名称的事件函数,我们怎么知道这 ...