rabbitmq交换器类型
来源:互联网 发布:qpst 不识别端口 编辑:程序博客网 时间:2024/04/19 15:24
rabbitmq 三种交换器类型 fanout direct topic
sender 代码
package com.lzf.cn.model;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;public class Send { /** * 场景1 * 单发送单接收 */ private final static String QUEUE_NAME = "test"; public static void main(String[] argv) throws Exception { /* ConnectionFactory factory = new ConnectionFactory(); factory.setHost("192.168.84.222"); factory.setPort(5672); factory.setUsername("admin"); factory.setPassword("*******"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); boolean durable = true; //消息持久化 channel.queueDeclare(QUEUE_NAME, durable, false, false, null); String message = "Hello World23!"; channel.basicPublish("", QUEUE_NAME, null, message.getBytes()); System.out.println(" [x] Sent '" + message + "'"); channel.close(); connection.close();*/ Send send = new Send(); send.topic(); } private final static String EXCHANGE_NAME_FANOUT="test_exchange_fanout"; private final static String EXCHANGE_NAME_DIRECT="test_exchange_direct"; private final static String EXCHANGE_NAME_TOPIC="test_exchange_topic"; public void fanout() { try{ ConnectionFactory factory = new ConnectionFactory(); factory.setHost("XXX.XXX.XXX"); factory.setPort(5672); factory.setUsername("admin"); factory.setPassword("*******"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); //声明交换器 channel.exchangeDeclare(EXCHANGE_NAME_FANOUT,"fanout");//fanout交换器 //消息内容 String message = "message=测试"; channel.basicPublish(EXCHANGE_NAME_FANOUT,"",null,message.getBytes()); System.out.println(" [x] Sent'"+message+"'" ); channel.close(); connection.close(); }catch(Exception e){ e.printStackTrace(); } } public void direct(){ try{ ConnectionFactory factory = new ConnectionFactory(); factory.setHost("XXX.XXX.XXX"); factory.setPort(5672); factory.setUsername("admin"); factory.setPassword("*******"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); //声明exchange channel.exchangeDeclare(EXCHANGE_NAME_DIRECT,"direct"); //消息内容 String message = "message=测试"; channel.basicPublish(EXCHANGE_NAME_DIRECT,"delete",null,message.getBytes()); //此处delete为路由键; System.out.println(" [x] Sent '"+ message+"'"); channel.close(); connection.close(); }catch(Exception e){ e.printStackTrace(); } } public void topic(){ try{ ConnectionFactory factory = new ConnectionFactory(); factory.setHost("XXX.XXX.XXX"); factory.setPort(5672); factory.setUsername("admin"); factory.setPassword("*******"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); //声明exchange channel.exchangeDeclare(EXCHANGE_NAME_TOPIC,"topic"); //消息内容 String message = "message=测试"; //发布消息 channel.basicPublish(EXCHANGE_NAME_TOPIC,"item.insert",null,message.getBytes()); System.out.println(" [x] Sent '"+message + "'"); channel.close(); connection.close(); }catch(Exception e){ e.printStackTrace(); } }}
consumer 代码
package com.lzf.cn.model;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;import com.rabbitmq.client.QueueingConsumer;public class Recv { private final static String QUEUE_NAME="test_queue_fanout_1"; public static void main(String[] argv) throws Exception { /* ConnectionFactory factory = new ConnectionFactory(); factory.setHost("XXX.XXX.XXX"); factory.setPort(5672); factory.setUsername("liuzhengfeng"); factory.setPassword("liuzhengfeng"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); boolean durable = true; //消息持久化 channel.queueDeclare(QUEUE_NAME, durable, false, false, null); System.out.println(" [*] Waiting for messages. To exit press CTRL+C"); boolean autoack = false; //消息确认 QueueingConsumer consumer = new QueueingConsumer(channel); channel.basicConsume(QUEUE_NAME, autoack, consumer); while (true) { QueueingConsumer.Delivery delivery = consumer.nextDelivery(); String message = new String(delivery.getBody()); System.out.println(" [x] Received '" + message + "'"); channel.basicAck(delivery.getEnvelope().getDeliveryTag(), true); continue; }*/ Recv recv = new Recv(); recv.recvTopic(); } private final static String EXCHANGE_NAME_DIRECT="test_exchange_direct"; private final static String EXCHANGE_NAME_FANOUT="test_exchange_fanout"; private final static String EXCHANGE_NAME_TOPIC="test_exchange_topic"; public void recvFanout(){ try{ ConnectionFactory factory = new ConnectionFactory(); factory.setHost("XXX.XXX.XXX"); factory.setPort(5672); factory.setUsername("admin"); factory.setPassword("******"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); channel.queueDeclare(QUEUE_NAME,false,false,false,null); //绑定队列到交换器 channel.queueBind(QUEUE_NAME,EXCHANGE_NAME_FANOUT,""); //不设置路由键 //统一时刻服务器只会发一条消息给消费者; channel.basicQos(1); //定义队列的消费者 QueueingConsumer consumer = new QueueingConsumer(channel); //监听队列,手动返回完成 channel.basicConsume(QUEUE_NAME,false,consumer); //获取消息 while (true) { QueueingConsumer.Delivery delivery = consumer.nextDelivery(); String message = new String(delivery.getBody()); System.out.println(" message:'" + message + "'"); Thread.sleep(10); //手动返回 channel.basicAck(delivery.getEnvelope().getDeliveryTag(),false); } }catch(Exception e){ e.printStackTrace(); } } public void recvDirect(){ try{ ConnectionFactory factory = new ConnectionFactory(); factory.setHost("XXX.XXX.XXX"); factory.setPort(5672); factory.setUsername("admin"); factory.setPassword("******"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); //声明队列 channel.queueDeclare(QUEUE_NAME,false,false,false,null); //绑定队列到交换机; // channel.queueBind(QUEUE_NAME,EXCHANGE_NAME,"update"); //匹配路由键为update channel.queueBind(QUEUE_NAME,EXCHANGE_NAME_DIRECT,"delete"); //匹配路由键是delete //同一时刻服务器只会发送一条消息给消费者; channel.basicQos(1); QueueingConsumer consumer = new QueueingConsumer(channel); //监听队列,手动返回完成 channel.basicConsume(QUEUE_NAME,false,consumer); //获取消息 while (true) { QueueingConsumer.Delivery delivery = consumer.nextDelivery(); String message = new String(delivery.getBody()); System.out.println("message:'"+message+"'"); Thread.sleep(10); channel.basicAck(delivery.getEnvelope().getDeliveryTag(),false); } }catch(Exception e){ e.printStackTrace(); } } /** * 匹配方式 * # 匹配一个或多个词以.隔开 * * 匹配一个词,以.隔开 */ public void recvTopic(){ try{ ConnectionFactory factory = new ConnectionFactory(); factory.setHost("XXX.XXX.XXX"); factory.setPort(5672); factory.setUsername("admin"); factory.setPassword("******"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); //声明通道 channel.queueDeclare(QUEUE_NAME,false,false,false,null); //绑定exchange channel.queueBind(QUEUE_NAME,EXCHANGE_NAME_TOPIC,"item.#"); //使用item.# 匹配所有的以item开头的 //同一时刻服务器只能发送一条消息给消费者; channel.basicQos(1); //声明消费者 QueueingConsumer consumer = new QueueingConsumer(channel); //监控队列,设置手动完成 channel.basicConsume(QUEUE_NAME,false,consumer); while (true) { QueueingConsumer.Delivery delivery = consumer.nextDelivery(); String message = new String(delivery.getBody()); System.out.println("搜索系统 '" + message + "'"); Thread.sleep(10); channel.basicAck(delivery.getEnvelope().getDeliveryTag(),false); } }catch(Exception e){ e.printStackTrace(); } }}
阅读全文
0 0
- rabbitmq交换器类型
- RabbitMQ: 交换类型
- php amqp 消息队列 RabbitMQ 交换器类型 直连 (三)
- php amqp 消息队列 RabbitMQ 交换器类型 广播 fanout (四)
- RabbitMQ学习之Headers交换类型(java)
- rabbitmq 交换模式-Fanout
- rabbitmq 交换模式-Direct
- rabbitmq 交换模式-Headers
- rabbitmq 交换模式-Topic
- rabbitmq 交换模式-Topic
- rabbitmq 交换模式-Headers
- rabbitmq 交换模式-Direct
- rabbitmq 交换模式-Fanout
- RabbitMQ从入门到精通----交换器详解
- Spring Boot RabbitMQ 入门(三)之 Fanout交换器
- Spring Boot RabbitMQ 入门(四)之 Topic交换器
- 【RabbitMQ】生产者,消费者,信道,队列,交换器和绑定
- 【RabbitMQ】三种类型交换器 Fanout,Direct,Topic
- Oracle 官方教材阅读整理
- 9月19日云栖精选夜读:阿里云MVP Meetup极客开跑,与MVP一起玩转云计算
- parseInt面对空格无能为力
- 地理空间距离计算优化-lucene
- 个性化进度条简单实现方案
- rabbitmq交换器类型
- html入门知识点(二)
- 无参转录组工具评估和流程展示
- 将PDF转换为图片
- angular js 查询 + 表单+日程
- mybaties的parameterType和resultMap的理解
- abap table control控制光标
- git使用(一):常见的git命令
- 使用OpenSSL实现CA证书的搭建过程