博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
路由模式 - direct
阅读量:6295 次
发布时间:2019-06-22

本文共 3699 字,大约阅读时间需要 12 分钟。

hot3.png

package com.shi.rout;import java.io.IOException;import java.util.concurrent.TimeoutException;import org.junit.Test;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConsumerCancelledException;import com.rabbitmq.client.QueueingConsumer;import com.rabbitmq.client.QueueingConsumer.Delivery;import com.rabbitmq.client.ShutdownSignalException;import com.shi.util.RabbitMqUtils;/** * 路由模式  direct * @author SHF * @version 创建时间:2018年7月4日  下午4:17:20 */public class RoutTest {		//交换机名称	private final static String EXCHANGE_NAME = "exchange_direct";	//路由 key	private final static String KEY_1 ="a";	private final static String KEY_2 ="b";	private final static String KEY_3 ="a";		//队列名称	private final static String QUEUE_1 ="queue_direct_1";	private final static String QUEUE_2 ="queue_direct_2";		/**	 * 生产者 - 路由模式	 * KEY_1 ="a";	 * @author SHF	 * @version 创建时间:2018年7月4日  下午4:20:39	 * @throws TimeoutException 	 * @throws IOException 	 */	@Test	public void send() throws IOException, TimeoutException {		//1 获取链接及mq 通道		Connection connection = RabbitMqUtils.getConnection();		Channel channel = connection.createChannel();				//2 声明exchange		channel.exchangeDeclare(EXCHANGE_NAME, "direct");				//3 消息内容		String message = " 施爷 路由模式direct 向你发送了一条消息....";		channel.basicPublish(EXCHANGE_NAME, KEY_1, null, message.getBytes());		System.out.println(" [x] sent:"+message);				//4关闭通道及连接		channel.close();		connection.close();	}		/**	 * 消费者1 - 路由模式	 * KEY_2 ="b";	 * @author SHF	 * @version 创建时间:2018年7月4日  下午4:33:55	 * @throws TimeoutException 	 * @throws IOException 	 * @throws InterruptedException 	 * @throws ConsumerCancelledException 	 * @throws ShutdownSignalException 	 */	@Test	public void reic1() throws IOException, TimeoutException, ShutdownSignalException, ConsumerCancelledException, InterruptedException {		//1 获取连接 及 通道		Connection connection = RabbitMqUtils.getConnection();		Channel channel = connection.createChannel();				//2 声明队列		channel.queueDeclare(QUEUE_1, false, false, false, null);				//3 绑定交换机,指定路由		channel.queueBind(QUEUE_1, EXCHANGE_NAME, KEY_2);				//4 同一个服务器只会发送一条消息给消费者		channel.basicQos(1);				//5 定义队列的消费者		QueueingConsumer consumer = new QueueingConsumer(channel);				//6 监听队列,手动返回完成		channel.basicConsume(QUEUE_1, false,consumer);				//7 获取消息		while(true) {			Delivery delivery = consumer.nextDelivery();			String message = new String(delivery.getBody());			System.out.println( "[x] reiv1 :" + message);						channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);		}	}			/**	 * 消费者2 - 路由模式	 * KEY_3 ="a"	 * @author SHF	 * @version 创建时间:2018年7月4日  下午4:33:55	 * @throws TimeoutException 	 * @throws IOException 	 * @throws InterruptedException 	 * @throws ConsumerCancelledException 	 * @throws ShutdownSignalException 	 */	@Test	public void reic2() throws IOException, TimeoutException, ShutdownSignalException, ConsumerCancelledException, InterruptedException {		//1 获取连接 及 通道		Connection connection = RabbitMqUtils.getConnection();		Channel channel = connection.createChannel();				//2 声明队列		channel.queueDeclare(QUEUE_2, false, false, false, null);				//3 绑定交换机,指定路由		channel.queueBind(QUEUE_2, EXCHANGE_NAME, KEY_3);				//4 同一个服务器只会发送一条消息给消费者		channel.basicQos(1);				//5 定义队列的消费者		QueueingConsumer consumer = new QueueingConsumer(channel);				//6 监听队列,手动返回完成		channel.basicConsume(QUEUE_2, false,consumer);				//7 获取消息		while(true) {			Delivery delivery = consumer.nextDelivery();			String message = new String(delivery.getBody());			System.out.println( "[x] reiv2 :" + message);						channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);		}	}	}

 

转载于:https://my.oschina.net/u/3677987/blog/1840204

你可能感兴趣的文章
John the Ripper password cracker
查看>>
centos redis 自动重启脚本
查看>>
Docker Toolbox Looks like something went wrong
查看>>
接口隔离原则最直白描述
查看>>
双系统删除分区后Grub启动失败
查看>>
Spring整合Struts的几种最常见方式
查看>>
Linux服务器信息检测Shell脚本
查看>>
CocoaPods安装与使用
查看>>
React学习(3)——列表、键值与表单
查看>>
我的友情链接
查看>>
Oracle查询重复数据并删除,只保留一条记录
查看>>
嵌入式
查看>>
【C语言】局部变量、全局变量,局部静态变量,全局静态变量,extern,static的区别...
查看>>
mysql各种错误提示码和解决方法
查看>>
蓝牙配对过程分析
查看>>
struts2 用form取值时出现的错误
查看>>
Flat - Music scores and guitar tabs editor(乐谱编辑器)
查看>>
Windows Server 2012 r2 显示计算机图标
查看>>
梦想之源
查看>>
使用kubernetes的deployment进行RollingUpdate
查看>>