很多时候,要求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循环添加数据即可
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)