简单实现rabbitmq通信

本文介绍了使用RabbitMQ实现消息订阅的逻辑,包括生产者发送消息到交换机,交换机根据路由键分发至队列,消费者订阅交换机并接收消息。同时详细阐述了接收消息后的回信机制,涉及两个交换机和多个队列的交互过程。
摘要由CSDN通过智能技术生成

订阅逻辑简述

  • 服务首先要绑定交换机,交换机绑定队列
  • 这里使用主题模式,交换机绑定2个队列,生产者把消息发送给交换机,交换机根据路由key,确定将消息发送给那个队列
  • 消费者订阅交换机,并绑定队列,即可接收到生产者的消息

队列结构图

在这里插入图片描述

发送和回信逻辑图
在这里插入图片描述

代码逻辑

将消息发送给交换机1

@Component
public class Producer {

    @Autowired
    RabbitTemplate rabbitTemplate;
	
    public void sendMqHua(Object msg){
        rabbitTemplate.convertAndSend(Def.EXCHANGE, Def.ROUTE_KEY_HUA, msg);
    }
}

收到消息回信给交换机2

@Component
public class ConsumerHua {

    @Autowired
    RabbitTemplate rabbitTemplate;

    /**
     * 接收到消息,回信到ROUTE_KEY_HUA
     * @param message
     */
    @RabbitHandler
    @RabbitListener(bindings = {
            @QueueBinding(value = @Queue(value = Def.LEARN_QUEUE_HUA, durable = "true"),
                    exchange = @Exchange(value = Def.EXCHANGE, type = "topic"),
                    key = Def.ROUTE_KEY_HUA)
    })
    public void listenCt(String message) {
        /*
            订阅hua的消息队列,收到ct的消息,再发一条消息到ct_recive的队列
            CT收到消息,回信会写到ct_recive的队列
         */
        rabbitTemplate.convertAndSend(Def.EXCHANGE2, Def.ROUTE_KEY_CT_RECEIVE, "HUA接收到消息了!");
    }


    /**
     * CT收到消息会回信给HUA_RECEIVE,这里绑定交换机2,和队列HUA_RECEIVE
     * 接收 CT回信
     * @param message
     */
    @RabbitHandler
    @RabbitListener(bindings = {
            @QueueBinding(value = @Queue(value = Def.LEARN_QUEUE_HUA_RECEIVE, durable = "true"),
                    exchange = @Exchange(value = Def.EXCHANGE2, type = "topic"),
                    key = Def.ROUTE_KEY_HUA_RECEIVE)
    })
    public void listenHua(String message) {
        // 这里是确认收到消息
        System.out.println( "CT [x] Received '" + message + "'" + "HUHUA7877777777777777777777");
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值