问题描述
我想使用 Camel 路由接收消息,但能够以某种方式注入自定义“containerFactory”。
通常(没有骆驼路线),您会执行以下操作:
@JmsListener(destination = "${some.virtual-topic.queue}",containerFactory = "customJmsListenerContainerFactory")
public void receiveMessage(String message) throws Exception {
// do something cool with the received message ...
}
请注意上面“JmsListener”注释的“containerFactory”属性如何为我们提供了一种使用非默认“containerFactory”的方法。这很好用,但是如果我们想使用 Camel 路由从队列中读取呢?类似的东西:
@Component
public class TestRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
from("activemq:queue:{{some.virtual-topic.queue}}")
.bean(MessageFacade.class,"process");
}
}
在上述最新案例中,我无法“注入”自定义 JMS 容器工厂。有谁知道这是否可能(以非黑客方式)?否则,我们将不得不依赖标准侦听器。
解决方法
查看文档:{{3}}
选项 consumerType
应设置为 Custom
,messageListenerContainerFactory
应指代容器工厂实现的 bean id。