在 Camel 路由上使用自定义 JMS 侦听器的“containerFactory”

问题描述

我想使用 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 应设置为 CustommessageListenerContainerFactory 应指代容器工厂实现的 bean id。