RabbitMQ Topic模式

RabbitMQ的Topic模式提供模糊匹配功能,不同于路由模式的精确匹配。在Topic模式中,使用#匹配0个或多个,*匹配1个。生产者声明交换机时指定类型为topic,消费者通过通配符模式如my_route.#(匹配多级)和my_route.*(匹配一级)进行绑定。

模型:
在这里插入图片描述
与路由模式类似,但是路由模式是精确匹配,而Topic模式是可以模糊匹配。

使用通配符#,*
#表示匹配0个或多个
*表示匹配1个

生产者

public class Provider {

	private static final String EXCHANGE_NAME="my_exchange";
	private static final String ROUTE_KEY = "my_route";
	public static void main(String[] args) throws Exception {
		Connection conn = RabbitMqUtil.getConnection();
		Channel channel = conn.createChannel();
		//声明交换机,指明分发类型
		channel.exchangeDeclare(EXCHANGE_NAME, "topic");
		//发送消息到交换机
		channel.basicPublish(EXCHANGE_NAME, ROUTE_KEY, null, "exchange data route key topic。。。。".getBytes());
		channel.close();
		conn.close();
	}
}

声明交换机的时候指明分发类型为topic

消费者

public class Reciver2 {
	private static final String EXCHANGE_NAME = "my_exchange";
	private static final String QUNUE_NAME = "exchange_qunue2";
	private static final String ROUTE_KEY = "my_route.#";
	public static void main(String[] args) throws Exception {
		Connection conn = RabbitMqUtil.getConnection();
		Channel channel = conn.createChannel();
		//声明队列
		channel.queueDeclare(QUNUE_NAME,false,false,false,null);
		//绑定队列到交换机
		channel.queueBind(QUNUE_NAME, EXCHANGE_NAME, ROUTE_KEY);
		//设置每次只发送一条消息
		channel.basicQos(1);
		
		Consumer consumer = new DefaultConsumer(channel) {
			public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,
					byte[] body) throws IOException {
				
				String msg = new String(body);
				System.out.println(msg);
			}
		};
		channel.basicConsume(QUNUE_NAME, true, consumer);
	}
}

消费者中绑定到交换机中的时候,routingKey使用通配符模式。
my_route.# 可匹配my_route、my_route.add、my_route.add.add等
my_route.* 可匹配my_route.add my_route.delete等

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值