rabbitmq常用的3种模式

1.fanout(广播,发布订阅)
发送到exchange的所有消息会被转发到与exchange绑定的所有queue,不需要处理路由
路由的作用:exchange会根据路由匹配队列,发送一个消息到交换机的时候,交换机根据路由发送到匹配这个路由的队列中去
1.public Binding FanoutBinding1() {
return BindingBuilder.bind(topicQueue1()).to(fanoutExchage());
绑定的时候并没有通过路由
2.发送的方法:
amqpTemplate.convertAndSend(MQConfig.FANOUT_EXCHANGE, “”, msg);
可以看出只要是和交换机绑定的路由都会收到消息。
2.topic(匹配) 自定义程度较高
exchang和queue需要进行绑定操作,
可以进行模糊匹配
1.public Binding topicBinding2() {
return BindingBuilder.bind(topicQueue2()).to(topicExchage()).with(“topic.#”);
绑定的时候需要通过路由“.with(“topic.#”);”
2.amqpTemplate.convertAndSend(MQConfig.TOPIC_EXCHANGE, “topic.key1”, msg+”1”)
可以看出:发送消息需要指出交换机和路由,交换机通过这个路由去和1中的.with(“topic.#”);去比较,若是满足才可以发送到队列
3.direct(转发)
可以使用自带的exchange,不需要将exchange和queue进行绑定操作,routykey必须完全匹配
1.只需要定义一个队列即可,不需要交换机和队列进行绑定操作
2.amqpTemplate.convertAndSend(MQConfig.QUEUE, msg);
可以看出只需要一个路由参数“MQConfig.QUEUE”,队列的路由需要和这个完全匹配才可以。

实现的方式:
配置文件中连接服务器
创建exchange(创建交换机)
创建queue(队列)
exchange和queue的绑定 通过一个字符串类型的routingkey
实现生产者:
重要的方法是:void convertAndSend( String routingKey, Object message)
根据指定的路由发送到指定的和这个路由匹配的交换机,交换机绑定着队列
实现消费者:
通过listening始终监听者某一个队列

先打开接收端,再打开服务端

猜你喜欢

转载自blog.csdn.net/peanutwzk/article/details/81005645