首先,看看我的程序:
someProcedure(String queueName) {
q = initQueue(queueName);
x = q.getAllMessages(queueName);
use x;
q.close();
}
这显然是粗糙的伪代码,但很好地反映了我要做的事情。
我成功地遵循了本教程https://spring.io/guides/gs/messaging-rabbitmq/ 。但是,在此解决方案中,与rabbitmq的连接仅创建一次并由spring自动创建。在我的情况下,我需要按需排队(通过其名称)并在获得消息后关闭此队列。
第一个问题是我无法访问代表rabbitmq的对象实例。这是因为这个实例是自动创建的(使用上面提到的教程)并且只针对一个队列。
你能给我一些线索,我该如何接受我的问题?
答案 0 :(得分:0)
您可以使用以下内容在当前应用程序上下文中列出Queue类型的Bean:
Map<String, Queue> queueBeans = ((ListableBeanFactory) applicationContext).getBeansOfType(Queue.class);
您可以尝试使用以下方法动态地将bean添加到应用程序上下文中:
context.getBeanFactory().registerSingleton("foo", new Queue("foo"));