【问题标题】:Consume message from jms queue使用来自 jms 队列的消息
【发布时间】:2013-09-23 04:04:08
【问题描述】:

如何使用以下代码中“jmsQueueConsumer:queue:consumer.queue”上的消息:

CamelContext context1 = new DefaultCamelContext();
        ConnectionFactory connectionFactory1 = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL);
        ConnectionFactory connectionFactory2 = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL);
        context1.addComponent("jmsQueueProducer", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory1));
        context1.addComponent("jmsQueueConsumer", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory2));
        context1.addRoutes(new RouteBuilder() {
            public void configure() {
                from("jmsQueueProducer:queue:producer.queue").to("jmsQueueConsumer:queue:consumer.queue");
            }
        });

        ProducerTemplate template = context1.createProducerTemplate();
        context1.start();


        for (int i = 0; i < 10; i++) {
            template.sendBody("jmsQueueProducer:queue:producer.queue", "Test Message: " + i);
        }

【问题讨论】:

    标签: jms activemq apache-camel


    【解决方案1】:

    您可以配置另一个路由来处理它。例如:

    from("jmsQueueConsumer:queue:consumer.queue")
    .process(new Processor() {
                   @Override
                    public void process(Exchange exchange) throws Exception {
                      // your processing code here
                    }
                })
       .to(any other endpoint)
    

    此外,您可以将处理器单独提取为一个单独的类。

    【讨论】:

    • 为了配置另一个 rout,我需要另一个 camelContext?
    • 不,一切都应该在同一个骆驼上下文中。您只需在 context1.start() 之前添加这一行。 context1.addRoutes(new RouteBuilder() { public void configure() { from("jmsQueueConsumer:queue:consumer.queue").to("任何其他端点"); } });
    猜你喜欢
    • 2013-02-26
    • 2011-04-25
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 2012-01-19
    • 2015-09-19
    • 2010-11-05
    • 1970-01-01
    相关资源
    最近更新 更多