Поглотить сообщение из очереди jms
Как использовать сообщения, помещенные в "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);
}
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)
Кроме того, вы можете самостоятельно извлечь ваш процессор как отдельный класс.