RabbitMQ 发布和订阅
来源:互联网 发布:疯狂的美图美工助手 编辑:程序博客网 时间:2024/05/16 12:03
发布和订阅:一个消息转发给多个消费者;
生产者并不是将消息直接发送给消息队列,而是发送给交换机,由交换机根据规则发送给指定的消息队列或丢弃。
临时队列:当没有消费者链接时候,队列的消息会被丢弃,队列会被自动删除。
消息发布者:
package pub.exch;import java.io.IOException;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;public class SendLog {private static final String EXCHANGE_NAME="logs";public static void main(String[] args) throws IOException {ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");Connection connection = factory.newConnection();Channel channel = connection.createChannel();//定义交换机,第一个参数为交换机名称,第二个参数为交换机类型channel.exchangeDeclare(EXCHANGE_NAME, "fanout");String msg="hello word";channel.basicPublish(EXCHANGE_NAME, "", null, msg.getBytes()); System.out.println(" [x] Sent '"+msg+"'");channel.close();connection.close();}}
消息订阅者1
package pub.exch;import java.io.IOException;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;import com.rabbitmq.client.ConsumerCancelledException;import com.rabbitmq.client.QueueingConsumer;import com.rabbitmq.client.ShutdownSignalException;public class ReqvLog {private static final String EXCHANGE_NAME="logs";public static void main(String[] args) throws IOException, ShutdownSignalException, ConsumerCancelledException, InterruptedException {ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");Connection connection = factory.newConnection();Channel channel = connection.createChannel();channel.exchangeDeclare(EXCHANGE_NAME, "fanout");//获取自动创建的消息队列(临时队列)名称String queueName = channel.queueDeclare().getQueue();//绑定临时消息队列和交换机channel.queueBind(queueName, EXCHANGE_NAME, "");System.out.println(" [*] Waiting for messages. To exit press CTRL+C");QueueingConsumer consumer = new QueueingConsumer(channel);channel.basicConsume(queueName, true,consumer);while(true){QueueingConsumer.Delivery delivery=consumer.nextDelivery();String message=new String(delivery.getBody());System.out.println(" [x] Received '" + message + "'");}}}
消息订阅者2
package pub.exch;import java.io.IOException;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;import com.rabbitmq.client.ConsumerCancelledException;import com.rabbitmq.client.QueueingConsumer;import com.rabbitmq.client.ShutdownSignalException;public class ReqvLog1 {private static final String EXCHANGE_NAME="logs";public static void main(String[] args) throws IOException, ShutdownSignalException, ConsumerCancelledException, InterruptedException {ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");Connection connection = factory.newConnection();Channel channel = connection.createChannel();channel.exchangeDeclare(EXCHANGE_NAME, "fanout");//获取自动创建的消息队列(临时队列)名称String queueName = channel.queueDeclare().getQueue();//绑定临时消息队列和交换机channel.queueBind(queueName, EXCHANGE_NAME, "");System.out.println(" [*] Waiting for messages. To exit press CTRL+C");QueueingConsumer consumer = new QueueingConsumer(channel);channel.basicConsume(queueName, true,consumer);while(true){QueueingConsumer.Delivery delivery=consumer.nextDelivery();String message=new String(delivery.getBody());System.out.println(" [x1] Received '" + message + "'");}}}
0 0
- RabbitMQ 发布和订阅
- RabbitMQ的订阅和发布步骤详解
- rabbitmq 发布/订阅”
- RabbitMQ发布订阅消息
- RabbitMQ 发布订阅测试
- RabbitMQ发布/订阅
- RabbitMQ发布/订阅注意事项
- 05-rabbitmq-发布订阅
- .Net下RabbitMQ的使用(3) -- 订阅和发布
- RabbitMQ (三) 发布/订阅
- RabbitMQ (三) 发布/订阅
- RabbitMQ (三) 发布/订阅
- RabbitMQ (三) 发布/订阅
- RabbitMQ (三) 发布/订阅
- RabbitMQ (三) 发布/订阅
- RabbitMQ (三) 发布/订阅
- RabbitMQ (三) 发布/订阅
- RabbitMQ (三) 发布/订阅
- [LNMPA搭建六]Apache服务器详细【配置】
- Google你能把Android的多媒体搞得再烂一些吗
- 复杂的世界 一个就够了
- gerp小记
- 笨小猴(NOIP2008)提高组
- RabbitMQ 发布和订阅
- Ubuntu, emacs中安装五笔输入法
- JavaWeb监听器
- Linux指令学习笔记一
- 在Linux下的进程资源的限制(struct rlimit)详解
- 并查集总结
- 个人总结NDIS中NDIS_PACKET,NDIS_BUFFER的关系
- spring security
- 【Mybatis】深入浅出Mybatis(九)——Mybatis和hibernate的对比