RabbitMQ示例生产者消费者(二)——Exchange fanout方式
来源:互联网 发布:电脑去水印软件 编辑:程序博客网 时间:2024/06/05 09:55
RabbitMQ示例生产者消费者(二)——Exchange fanout方式
本文主要参考:
http://www.rabbitmq.com/tutorials/tutorial-three-java.html
好,先介绍一下本篇文章中的主要内容。
本文主要介绍的是通过fanout的exchange方式,进行生产,消费端通过binding操作,对queue和exchange进行绑定,然后消费。
好,下面看一下代码:
生产者:
package com.xueyou.demo;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;/** * Created by wuxueyou on 2017/8/20. */public class AppPublish { private final static String EXCHANGE_NAME = "log-exchange"; public static void main(String[] args) throws Exception { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("192.168.0.99"); factory.setPort(5672); factory.setUsername("admin"); factory.setPassword("admin"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); channel.exchangeDeclare(EXCHANGE_NAME,"fanout"); int i = 10000; while (i-- > 0) { String message = "hey this is the loginfo " + i; channel.basicPublish(EXCHANGE_NAME,"", null, message.getBytes()); System.out.println("sent message:" + message); Thread.sleep(100); } channel.close(); connection.close(); }}
消费者:
package com.xueyou.demo;import com.rabbitmq.client.*;import java.io.IOException;/** * Created by wuxueyou on 2017/8/20. */public class AppSubScribe { private final static String EXCHANGE_NAME = "log-exchange"; public static void main(String[] args) throws Exception { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("192.168.0.99"); factory.setPort(5672); factory.setUsername("admin"); factory.setPassword("admin"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); channel.exchangeDeclare(EXCHANGE_NAME, "fanout"); String queueName = channel.queueDeclare().getQueue(); channel.queueBind(queueName, EXCHANGE_NAME, ""); 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("receive message :" + message); } }; channel.basicConsume(queueName, true, consumer); }}
在生产者和消费者端需要注意的是:生产者端使用的是fanout的方式,所以在进行发送的时候只需要进行exchange的声明,而不需要对routingkey进行指定;而消费者端是这样,消费者端需要声明一个queue,同时把queue和exchange进行绑定,这样才能进行消费。
fanout方式是这样,是一种广播的方式,只要和exchange绑定的queue都能够接受到exchange发送的消息,而且每个queue中的内容都是全量的。
阅读全文
0 0
- RabbitMQ示例生产者消费者(二)——Exchange fanout方式
- 【RabbitMQ】——三种Exchange模式(Fanout、Direct、Topic)
- RabbitMQ Exchange 模式 - fanout
- 生产者消费者示例二
- RabbitMQ Exchange模式之Fanout
- RabbitMQ Exchange Type(Direct/Fanout/Topic)理解测试
- RabbitMQ的Exchange 模式之Fanout(广播模式)
- Java Jedis操作Redis示例(二)——list 生产者/消费者模式实现消息队列
- 五、rabbitMQ fanout exchange Publish/Subscribe
- RabbitMQ之路由 fanout方式
- Java线程之单生产者单消费者示例(二)
- C#多线程(二)——生产者和消费者实例
- Linux系统编程——生产者与消费者(二)
- Rabbitmq源码示例(生产者/消费者,非持久化/持久化)
- RabbitMQ学习之:(七)Fanout Exchange (转贴+我的评论)
- 黑马程序员——多个生产者,多个消费者 notifyAll() 方式二
- RabbitMQ消息队列之二:消费者和生产者 Demo
- 生产者与消费者(二)
- 数据结构-哈希表
- 常用数学符号的 LaTeX 表示方法
- 【Leetcode】【python】Letter Combinations of a Phone Number
- 【福利】彩虹秒赞8.0源码破解版(去域名授权) 彩虹云任务系统无任何限制
- 康托展开及其逆运算
- RabbitMQ示例生产者消费者(二)——Exchange fanout方式
- Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构 v3 r819
- 使用Lock锁机制实现 多线程的 多生产 多消费 模式。
- Unity-动画(Animator)
- samba
- Atitit 档案学 档案管理 attilax学习总结
- uva10608(基础的并查集)
- iptables
- 从一个run方法的经历看线程池