【RabbitMQ】springboot集成--topic模式

本文展示了如何在SpringBoot应用中使用RabbitMQ进行消息通信。通过添加spring-boot-starter-amqp依赖,配置RabbitMQ连接参数,然后利用RabbitTemplate发送消息到指定交换机和路由键。在消费端,通过@RabbitListener注解监听队列并绑定交换机和路由键来接收消息。
摘要由CSDN通过智能技术生成

目录

1.maven依赖

2.配置参数

3.发送消息

4.接收消息

5.输出结果

6.总结

5.1生产端

5.2消费端


1.maven依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

2.配置参数

#配置rabbitMq
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.publisher-returns=true
spring.rabbitmq.publisher-confirm-type=correlated

3.发送消息

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @GetMapping(value = "/testmq")
    public void testmq() {
        try {
            rabbitTemplate.convertAndSend("abc", "aa", JSON.toJSONString("我是1"));
            rabbitTemplate.convertAndSend("abc", "bb", JSON.toJSONString("我是2"));
            rabbitTemplate.convertAndSend("weather", "bb", JSON.toJSONString("我是3"));
            System.out.println("已发送");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

4.接收消息

    @RabbitListener(bindings = @QueueBinding(value = @Queue(value = "123"), exchange = @Exchange(value = "abc", type = ExchangeTypes.TOPIC), key = "aa"))
    @RabbitHandler
    public void process3(String message) {
        try {

            System.out.println("process3:"+message);
        } catch (Exception e) {
            log.error("MQ--process3--#--收到消息处理异常 : [e]{},[message]{}", e, message);
        }
    }
    @RabbitListener(bindings = @QueueBinding(value = @Queue(value = "456"), exchange = @Exchange(value = "abc", type = ExchangeTypes.TOPIC), key = "bb"))
    @RabbitHandler
    public void process4(String message) {
        try {

            System.out.println("process4:"+message);
        } catch (Exception e) {
            log.error("MQ--process4--#--收到消息处理异常 : [e]{},[message]{}", e, message);
        }
    }
    @RabbitListener(bindings = @QueueBinding(value = @Queue(value = "4567"), exchange = @Exchange(value = "abc", type = ExchangeTypes.TOPIC), key = "bb"))
    @RabbitHandler
    public void process42(String message) {
        try {

            System.out.println("process42:"+message);
        } catch (Exception e) {
            log.error("MQ--process4--#--收到消息处理异常 : [e]{},[message]{}", e, message);
        }
    }
    @RabbitListener(bindings = @QueueBinding(value = @Queue(value = "456"), exchange = @Exchange(value = "weather", type = ExchangeTypes.TOPIC), key = "bb"))
    @RabbitHandler
    public void process5(String message) {
        try {

            System.out.println("process5:"+message);
        } catch (Exception e) {
            log.error("MQ--process4--#--收到消息处理异常 : [e]{},[message]{}", e, message);
        }
    }

5.输出结果

6.总结

5.1生产端

方法 rabbitTemplate  的  convertAndSend(String exchange, String routingKey, Object object)   只需要将消息体发到指定的【交换机】和【路由键】上就可以


5.2消费端

注解 @RabbitListener(bindings = @QueueBinding(value = @Queue(value = "123"), exchange = @Exchange(value = "abc", type = ExchangeTypes.TOPIC), key = "aa")) 监听队列名(可自定义) 将队列绑定到想要消费的【交换机】和【路由键】上   如果没有【交换机】和【路由键】就创建。

通过上述测试结果,如果两个监听的消费端绑定的【交换机】和【路由键】一致,则都能收到消息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值