赞
踩
很多时候,要求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<String> 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循环添加数据即可
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。