springboot动态监听rabbitMq队列

springboot动态监听rabbitMq队列,第1张

很多时候,要求mq队列能够配置,或者说多个用户要求mq队列名称为用户名+固定的字符串,但是监听同一个方法,这个时候就需要用到动态监听。代码如下

    @Autowired
    private AmqpAdmin amqpAdmin;
    @Autowired
    private  SimpleMessageListenerContainer container;
    public String addQueue(Queue queue){
        return amqpAdmin.declareQueue(queue);
    }

    @Override
    public void run(String... args) throws Exception {
        String queueName=SpringUtils.getApplicationContext().getBean(Environment.class).getProperty("queue");//配置文件中配置,也可配置在数据库
        MessageListenerAdapter messageListenerAdapter = new MessageListenerAdapter(new MessageListen());//消费mq消息的类
        List queueNamesList=new ArrayList<>();
        messageListenerAdapter.addQueueOrTagToMethodName(queueName,"getMessage");//消费mq消息的方法
        queueNamesList.add(queueName);
        logger.info("新增队列queueName={}",queueName);
        Queue queue = new Queue(queueName);
        addQueue(queue);
        if(!queueNamesList.isEmpty()){
            String[] strings=new String[queueNamesList.size()];
            container.addQueueNames(queueNamesList.toArray(strings));
        }
        container.setMessageListener(messageListenerAdapter);
    }

如果是多个用户,则是给queueNamesList循环添加数据即可

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/742149.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存