RabbitMQ和SpringBoot - 根据需要连接到不同的队列并获取所有消息

时间:2017-03-21 16:32:05

标签: java spring-boot rabbitmq

首先,看看我的程序:

someProcedure(String queueName)   { 
  q = initQueue(queueName);
  x = q.getAllMessages(queueName);
  use x;
  q.close();
}

这显然是粗糙的伪代码,但很好地反映了我要做的事情。

我成功地遵循了本教程https://spring.io/guides/gs/messaging-rabbitmq/ 。但是,在此解决方案中,与rabbitmq的连接仅创建一次并由spring自动创建。在我的情况下,我需要按需排队(通过其名称)并在获得消息后关闭此队列。

第一个问题是我无法访问代表rabbitmq的对象实例。这是因为这个实例是自动创建的(使用上面提到的教程)并且只针对一个队列。

你能给我一些线索,我该如何接受我的问题?

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容在当前应用程序上下文中列出Queue类型的Bean:

Map<String, Queue> queueBeans = ((ListableBeanFactory) applicationContext).getBeansOfType(Queue.class);

您可以尝试使用以下方法动态地将bean添加到应用程序上下文中:

context.getBeanFactory().registerSingleton("foo", new Queue("foo"));