SpringBoot 动态监听RabbitMq队列

每个人遇到的场景可能不同,我本次遇到的就是队列已存在,我只需要监听即可。话不多说,上码!

application.properties

server.port=9009
spring.rabbitmq.host=192.168.1.118
spring.rabbitmq.port=5672
spring.rabbitmq.username=rabbit_dev
spring.rabbitmq.password=Dd.1111

pom.xml

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--amqp-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
            <version>2.0.3.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-extra -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-extra</artifactId>
            <version>5.5.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
RbMQReceiverHand.java

import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;
import org.springframework.stereotype.Component;

/**
 * @author ...
 * @version 1.0
 * @date 2020/12/29 18:02
 * @Email ...@163.com
 * @DESC:
 */
/**
 * 监听接收消息
 */
@Component
public class RbMQReceiverHand implements MessageListener {

    @Override
    public void onMessage(Message message) {
        System.out.println("====接收到One" + message.getMessageProperties().getConsumerQueue() + "队列的消息=====");
        System.out.println(message.getMessageProperties().toString());
        System.out.println(new String(message.getBody()));
    }
}
RabbitMQConfig.java


import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

import javax.annotation.Resource;

/**
 * @author ...
 * @version 1.0
 * @date 2020/12/29 18:05
 * @Email ...@163.com
 * @DESC:
 */
@Configuration
@Import(cn.hutool.extra.spring.SpringUtil.class)
public class RabbitMQConfig {
    @Resource
    RbMQReceiverHand RbMQReceiverHand;

    @Bean
    public Queue bw_Cabinet_OnOff() { return new Queue("Cabinet_OnOff",true); }
    @Bean
    public SimpleMessageListenerContainer messageListenerContainer(ConnectionFactory connectionFactory) {
        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        container.setQueueNames("Cabinet_OnOff");
        container.setMessageListener(RbMQReceiverHand);
        return container;
    }
}

RbTestController.java
package com.bw.Test;

import cn.hutool.extra.spring.SpringUtil;
import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
import org.springframework.web.bind.annotation.*;

/**
 * @author ...
 * @version 1.0
 * @date 2020/12/30 17:59
 * @Email ...@163.com
 * @DESC:
 */
@RestController
@RequestMapping("/test")
public class RbTestController {
    @PostMapping
    public String addQueue(@RequestParam String queueNmae) {
        SimpleMessageListenerContainer container = SpringUtil.getBean("messageListenerContainer");
        container.addQueueNames(queueNmae);
        return "添加" + queueNmae + " ok";
    }

    @DeleteMapping
    public String delQueue(@RequestParam String queueNmae) {
        SimpleMessageListenerContainer container = SpringUtil.getBean("messageListenerContainerTwo");
        container.removeQueueNames(queueNmae);
        return "删除 " + queueNmae + " ok";
    }
}

到此结束,就算完成了。

我这里用getBean好处是可扩展

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值