RabbitMQ学习之exchange总结

前面介绍了几类exchange的作用,这个总结一下:
direct:消息会被推送至绑定键(binding key)和消息发布附带的选择键(routing key)完全匹配的队列。默认有”AMQP default”,它用一个空字符串表示,它是direct类型的exchange,任何发往这个exchange的消息都会被路由到routing key的名字对应的队列上,如果没有对应的队列,则消息会被丢弃。

声明exchange
channel.basicPublish(exchange, routingKey, props, body);
发布消息
channel.basicPublish(exchange, routingKey, null, message .getBytes());
消费端绑定routing key
channel.queueBind(queue, exchange, routingKey)
接收消息
channel.basicConsume(queue, true, consumer);

fanout:一个发送到exchange的消息都会被转发到与该exchange绑定的所有队列上。

声明exchange
channel.exchangeDeclare(exchange, “fanout”);
发布消息
channel.basicPublish(exchange, queue, null, message .getBytes());
消费端绑定
channel.queueBind(queue, exchange, “”);
接收消费
channel.basicConsume(queue, true, consumer);

topic:一个附带特殊的选择键将会被转发到绑定键与之匹配的队列中。需要注意的是:关于绑定键有两种特殊的情况。
1。* 可以匹配一个标识符。
2。# 可以匹配0个或多个标识符。

声明exchange
channel.exchangeDeclare(exchange, “topic”);
发布消息
channel.basicPublish(exchange, routingKey, null, msg
消费端绑定
channel.queueBind(queue, exchange, “kernel.*”);
接收消息
channel.basicConsume(queue, true, consumer);

Headers:发送者在发送的时候定义一些键值对,接收者也可以再绑定时候传入一些键值对,两者匹配的话,则对应的队列就可以收到消息。匹配有两种方式all和any。这两种方式是在接收端必须要用键值”x-mactch”来定义。all代表定义的多个键值对都要满足,而any则代码只要满足一个就可以了。

声明exchange
channel.exchangeDeclare(exchange,ExchangeTypes.HEADERS,false,true,null);
发布消息
Map headers = new Hashtable();
headers.put(“aaa”, “01234”);
Builder properties = new BasicProperties.Builder();
properties.headers(headers);
channel.basicPublish(exchange,”“,properties.build(),message.getBytes());
消费端绑定
channel.queueDeclare(queue,false, false, true,null);
Map headers = new Hashtable();
headers.put(“x-match”, “any”);//all any
headers.put(“aaa”, “01234”);
headers.put(“bbb”, “56789”);
channel.queueBind(queue, exchange,”“, headers);
接收消息
channel.basicConsume(QUEUE_NAME, true, consumer);

一个消息先有exchange通过绑定关系,判断要投递到哪个消费队列,根据exchange类型的投递的判断逻辑也不同。
引用图片

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值