Передача значения свойства через разные верблюда Контекст в apache верблюда - PullRequest
0 голосов
/ 29 сентября 2019

Как передать свойства верблюда в разные верблюжьи контексты?Моя текущая архитектура будет обрабатывать 4 различных вида сообщений (A, B, C, D), и она использует одни и те же маршруты для всех из них только при сохранении, изменяет имена таблиц БД в зависимости от типа сообщения, но теперь у меня есть требование, чтобы янужно сохранить только несколько значений из объекта обмена для конкретного сообщения.Я думаю об установке свойства в маршруте, и тип сообщения «E», я перенаправлю его на другой маршрут.но как передать значение свойства в другой контекст верблюда

1 Ответ

0 голосов
/ 30 сентября 2019

Не знаю, имеете ли вы в виду свойства приложения (например, в файлах свойств Java ) или свойство Exchange , как в объекте Camels Exchange для переноса сообщения.

Однако это звучит как последний, поскольку свойства приложения обычно не передаются.

Свойства Exchange являются лишь частью Camel-оболочки вокруг сообщения во время обработки.Если вы отправляете сообщение во время обработки маршрута в другую конечную точку, как при .to(endpoint), обычно отправляется только сообщение , а Exchange выбрасывается .

from(endpoint)
    .setProperty("myProperty", value)
    .to("activemq:queue:myQueue")
    // myProperty is no more available at myQueue

Конечно, есть исключения, это зависит от типа конечной точки.Например, при отправке на прямые конечные точки (синхронная конечная точка Camel в памяти) Exchange выживает.Но прямые конечные точки не работают в разных контекстах Camel.Для других типов конечных точек, таких как HTTP, JMS и т. Д., Свойства теряются.

Поэтому, если вы хотите установить «переменную сообщения», которая передается на другие конечные точки , особенно в различных контекстах Camel, вы должны установить заголовок сообщения .

from(endpoint)
    .setHeader("myHeader", value)
    .to("activemq:queue:myQueue")
    // myHeader is still available at myQueue
...