java - Apache Camel JMS : How to use JNDI connection to publish or Subscribe to a Queue using java DSL?

标签 java apache-camel jms dsl

我正在尝试使用 Camel 从 JBoss EAP 7.0 连接到 JMS 队列。我使用的是 Java DSL 而不是 Spring。如何获取 JNDI 条目并创建连接来监听或分派(dispatch)消息?
下面是我通常用来连接到 ActiveMQ 的代码段!

CamelContext context = new DefaultCamelContext();
context.addComponent("activemq", ActiveMQComponent.activeMQComponent("tcp://localhost:61616"));
context.addRoutes(new RouteBuilder() {
    public void configure() {
        from("direct:writeQueue").to("activemq:queue:FOO");
    }
});
context.start();
Thread.sleep(2000);
ProducerTemplate producer = context.createProducerTemplate();
producer.sendBody("activemq:queue:FOO", "Test Message");

我尝试添加如下代码:

CamelContext context = null;
@Resource(mappedName = "java:/jboss/exported/jms/queue/TestQ")
private ConnectionFactory connectionFactory;
public void testJMS() throws Exception {

    context = new DefaultCamelContext();
    JmsComponent component = new JmsComponent();
    component.setConnectionFactory(connectionFactory);
    context.addComponent("jms", component);
    /*
    Routing Section
    */
}

但是这段代码给了我这样的错误:connectionFactory 不能为空

最佳答案

这是我在 JBoss...Wildfly 中所做的事情:

public class ComponentFactory {

private static final int JMS_POOL_SIZE = 5;

@Resource(mappedName = "java:/ConnectionFactory")
private static ConnectionFactory connectionFactory;

@Produces
@ApplicationScoped
@Named("jms")
public SjmsComponent jmsComponent() {      
    SjmsComponent component = new SjmsComponent();      
    ConnectionResource pool = new ConnectionFactoryResource(JMS_POOL_SIZE, connectionFactory);
    component.setConnectionResource(pool); // Use built-in Wildfly pool
    return component;
}

}

关于java - Apache Camel JMS : How to use JNDI connection to publish or Subscribe to a Queue using java DSL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62319661/

相关文章:

java - 为什么hashCode的值是相同的,而都是不同的String对象

java - 在 Java Swing 中计算 JPanel 中两点之间路径的算法

java |将数据处理程序写入文件的方法需要比预期更多的时间

apache-camel - Apache Camel 并发消费者与线程

java - ActiveMQ ObjectMessage 安全性不适用于带有 SERIALIZABLE_PACKAGES 变量的 Linux

java - 如何检查jndi绑定(bind)/解除绑定(bind)状态?

java - JMS/WMQ 可以同步消息传递吗?

java - 如何使用 Mockito 验证 Junit 测试用例中的 logger.error(String message, Throwable t)

java - JPA 读取但不持久

json - 如何在蓝图中从 Camel 调用 REST 调用(带有 JSON 主体的 POST)