2013-09-18 4 views
0

Как получать сообщения, которые ставят на «jmsQueueConsumer: Очередь: consumer.queue» в следующем коде:Потребляйте сообщение из очереди JMS

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); 
     } 

ответ

0

Вы можете настроить другой маршрут, чтобы обработать его. например:

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

Кроме того, вы можете самостоятельно извлечь свой процессор как отдельный класс.

+0

Для создания другого маршрута мне нужен еще один camelContext? –

+0

Нет, все должно быть в одном и том же контексте верблюда. вам просто нужно добавить эту строку до context1.start(). context1.addRoutes (new RouteBuilder() { public void configure() { from ("jmsQueueConsumer: queue: consumer.queue"). to ("любая другая конечная точка"); } }); – vigneshre

+0

Tnx, это очень хорошо! –

Смежные вопросы