Маршрутизация нескольких сообщений в одном потоке в apache верблюде - PullRequest
0 голосов
/ 08 января 2020

Я придумал сценарий, в котором я буду создавать несколько XML сообщений и устанавливать их как часть объекта Exchange.

Как в маршрутизаторе маршрутизировать несколько частей сообщений, установленных в теле обмена, в один поток? В основном мне нужно отправить два разных набора сообщений как часть свойства в MQ.

Код процессора

public void process(Exchange exchange) throws Exception {
exchange.setProperty("msg1", xml1);
exchange.setProperty("msg2",xml2);
}

Код маршрутизатора

@Override
    public void configure() {
from("solace:q")
.process(aboveProcessor)
..?//code to route both messages as two different messages to same MQ.
}

Если есть какой-то другой подход, который я должен использовать, пожалуйста, дайте мне знать.

1 Ответ

1 голос
/ 08 января 2020

Вместо настройки свойств Exchange, которые в любом случае не отправляются с сообщениями JMS, вы можете заполнить список в своем процессоре, указав в качестве основного тела тело списка:

public void process(Exchange exchange) throws Exception {
    List<Object> list = new ArrayList<Object>();
    list.add( xml1 );
    list.add( xml2 );
    exchange.getIn().setBody( list );
}

, а затем разделить список перед отправкой в ​​очередь:

from("solace:q")
  .process(aboveProcessor)
  .split(body())
    .to("mq:myQueue");

Предполагается, что вы отправляете каждый из ваших двух XML документов в одну и ту же очередь и с одинаковыми заголовками сообщений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...