Подтвердить что ты не робот

Передача значений между процессорами в apache camel

В apache camel, какой из них - лучший способ передать значения из обменного процессора другому (и почему):

  • сохранение в заголовках обмена
  • с помощью метода setProperty при построении маршрута.
  • другой способ..
4b9b3361

Ответ 1

Свойства и заголовки практически одинаковы. Однако заголовки преобразуются в/из заголовков конкретных протоколов на определенные компоненты, такие как Jms. Итак,

  • Метаданные внутри маршрута: свойства
  • Метаданные в/извне: заголовки

Ответ 2

Одно из различий, не упомянутых Бен и Петтером, заключается в том, что свойства безопасно сохраняются в течение всего времени обработки сообщения в Camel. Напротив, заголовки являются частью протокола сообщений и не могут быть распространены во время маршрутизации. Например, JMS имеет ограничения, которые вы можете хранить в качестве заголовков и т.д.

Вы можете прочитать свободную главу 1 книги "Верблюд в действии", поскольку она охватывает концепции Camel с Exchange, Message и т.д.

Ответ 3

Exchange передается между процессорами. Он содержит свойства, сообщение IN и дополнительное сообщение OUT. Каждый из них способен хранить данные объекта, но в целом:

  • используйте Свойства Exchange для общих метаданных о сообщении (используется реже)
  • используйте заголовки сообщений IN для настройки свойств конечной точки или для метаданных о теле сообщения (часто используется)
  • используйте тело сообщения IN для полезной нагрузки сообщения (чаще всего используется)
  • создает сообщение OUT только в случае необходимости для поддержки отдельных сообщений IN или OUT во время обработки (по умолчанию используется только IN)

Тем не менее, это действительно зависит от компонента, который называется вашим процессором. Большинство из них имеют некоторые заголовки и/или значения тела, которые необходимы для использования конечной точки и т.д. Для получения подробной информации см. Конкретную страницу .

Кроме того, Exchange/Message более подробно описаны на этих страницах:

http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Exchange.html

http://fusesource.com/docs/router/2.8/prog_guide/MsgFormats-Exchanges.html