Mustache
Поддерживается только производитель
Компонент Mustache позволяет обрабатывать сообщения с использованием шаблона Mustache (opens in a new tab) . Это может быть идеальным решением при использовании шаблонизации для генерации ответов на запросы.
Пользователям Maven необходимо добавить следующую зависимость для pom.xmlэтого компонента:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-mustache</artifactId>
<version>x.x.x</version> <!-- use the same version as your Camel core version -->
</dependency>URI format
mustache:templateName[?options]
Где templateName -- это локальный URI classpath шаблона, который нужно вызвать; или полный URL удаленного шаблона (например: file://folder/myfile.mustache).
Configuring Options
Компоненты Camel настраиваются на двух отдельных уровнях:
-
уровень компонентов
-
уровень конечной точки
Configuring Component Options
На уровне компонентов задаются общие и общие конфигурации, которые затем наследуются конечными точками. Это самый высокий уровень конфигурации.
Например, компонент может иметь настройки безопасности, учетные данные для аутентификации, URL-адреса для сетевого подключения и т. д.
У некоторых компонентов всего несколько параметров, а у других -- много. Поскольку компоненты обычно имеют предустановленные значения по умолчанию, которые широко используются, зачастую вам может потребоваться настроить лишь несколько параметров компонента, а то и вовсе ни одного.
Вы можете настроить компоненты, используя:
-
Компонент DSL (opens in a new tab) .
-
в файле конфигурации (
application.propertiesфайлы*.yaml, и т.д.). -
непосредственно в коде Java.
Configuring Endpoint Options
Настройка конечных точек обычно занимает больше времени, поскольку у них есть множество параметров. Эти параметры помогают вам настроить функции конечной точки. Параметры также классифицируются по тому, используется ли конечная точка как потребитель ( от ), как производитель ( от ) или и то, и другое.
Конечные точки чаще всего настраиваются непосредственно в URI конечной точки в виде параметров пути и запроса . Вы также можете использовать Endpoint DSL (opens in a new tab) и DataFormat DSL (opens in a new tab) в качестве типобезопасного способа настройки конечных точек и форматов данных в Java.
Хорошей практикой при настройке параметров является использование заполнителей свойств (opens in a new tab) .
Заполнители свойств обеспечивают несколько преимуществ:
-
Они помогают предотвратить использование жестко запрограммированных URL-адресов, номеров портов, конфиденциальной информации и других настроек.
-
Они позволяют вынести конфигурацию за пределы кода.
-
Они помогают коду стать более гибким и пригодным для повторного использования.
В следующих двух разделах перечислены все параметры, сначала для компонента, а затем для конечной точки.
Component Options
Компонент Mustache поддерживает 6 опций, которые перечислены ниже.
allowContextMapAll (producer)
-
Определяет, должна ли карта контекста разрешать доступ ко всем данным. По умолчанию доступен только текст и заголовки сообщения. Этот параметр можно включить для полного доступа к текущему Exchange и CamelContext. Это может представлять потенциальную угрозу безопасности, поскольку открывает доступ ко всем возможностям API CamelContext.
-
По умолчанию: false
-
Тип: boolean
allowTemplateFromHeader (producer)
-
Разрешить или запретить использование шаблона ресурса из заголовка (по умолчанию -- false). Включение этого параметра позволяет указывать динамические шаблоны через заголовок сообщения. Однако это может рассматриваться как потенциальная уязвимость безопасности, если заголовок исходит от злоумышленника, поэтому используйте этот параметр с осторожностью.
-
По умолчанию: false
-
Тип: boolean
contentCache (producer)
-
Устанавливает, использовать ли кэш содержимого ресурсов или нет
-
По умолчанию: true
-
Тип: boolean
lazyStartProducer (producer)
-
Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.
-
По умолчанию: false
-
Тип: boolean
autowiredEnabled (advanced)
-
Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.
-
По умолчанию: true
-
Тип: boolean
mustacheFactory (advanced)
-
Autowired Для использования пользовательского MustacheFactory.
-
По умолчанию:
-
Тип: MustacheFactory
Endpoint Options
Конечная точка Mustache настраивается с использованием синтаксиса URI:
mustache:resourceUri
Со следующими параметрами пути и запроса :
Path Parameters (1 parameters)
resourceUri (producer)
-
Требуемый путь к ресурсу. Можно указать префикс: classpath, file, http, ref или bean. classpath, file и http загружают ресурс по этим протоколам (classpath используется по умолчанию). ref ищет ресурс в реестре. bean вызывает метод bean-компонента, который будет использоваться в качестве ресурса. Для bean-компонента можно указать имя метода после точки, например, bean:myBean.myMethod.
-
По умолчанию:
-
Тип: String
Query Parameters (7 parameters)
allowContextMapAll (producer)
-
Определяет, должна ли карта контекста разрешать доступ ко всем данным. По умолчанию доступен только текст и заголовки сообщения. Этот параметр можно включить для полного доступа к текущему Exchange и CamelContext. Это может представлять потенциальную угрозу безопасности, поскольку открывает доступ ко всем возможностям API CamelContext.
-
По умолчанию: false
-
Тип: boolean
allowTemplateFromHeader (producer)
-
Разрешить или запретить использование шаблона ресурса из заголовка (по умолчанию -- false). Включение этого параметра позволяет указывать динамические шаблоны через заголовок сообщения. Однако это может рассматриваться как потенциальная уязвимость безопасности, если заголовок исходит от злоумышленника, поэтому используйте этот параметр с осторожностью.
-
По умолчанию: false
-
Тип: boolean
contentCache (producer)
-
Устанавливает, использовать ли кэш содержимого ресурсов или нет.
-
По умолчанию: true
-
Тип: boolean
encoding (producer)
-
Кодировка символов содержимого ресурса.
-
По умолчанию:
-
Тип: String
endDelimiter (producer)
-
Символы, используемые для обозначения конца кода шаблона.
-
По умолчанию: }}
-
Тип: String
startDelimiter (producer)
-
Символы, используемые для обозначения начала кода шаблона.
-
По умолчанию: {{
-
Тип: String
lazyStartProducer (producer (advanced))
-
Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.
-
По умолчанию: false
-
Тип: boolean
Message Headers
Компонент Mustache поддерживает 2 заголовка сообщения, которые перечислены ниже:
MustacheResourceUri (producer)
Constant: MUSTACHE_RESOURCE_URI (opens in a new tab)
-
URI для ресурса шаблона, который следует использовать вместо конечной точки.
-
По умолчанию:
-
Тип: String
MustacheTemplate (producer)
Constant: MUSTACHE_TEMPLATE (opens in a new tab)
-
Шаблон, который следует использовать вместо настроенной конечной точки.
-
По умолчанию:
-
Тип: String
Usage
Mustache Context
Camel предоставит информацию об обмене в контексте Mustache (просто Map). ExchangeПередаётся как:
exchange
- Сам
Exchangeпо себе.
exchange.properties
- Свойства
Exchange.
variables
- Переменные
headers
- Заголовки входящего сообщения.
camelContext
- Контекст Camel.
request
- Сообщение «Входящие».
body
- Текст сообщения
response
- Сообщение Out (только для шаблона обмена сообщениями InOut).
Dynamic templates
Camel предоставляет два заголовка, с помощью которых можно определить местоположение ресурса для шаблона или самого его содержимого. Если установлен какой-либо из этих заголовков, Camel использует его для ресурса, настроенного в конечной точке. Это позволяет предоставлять динамический шаблон во время выполнения.
Examples
Например, вы можете использовать что-то вроде:
from("activemq:My.Queue").
to("mustache:com/acme/MyResponse.mustache");Использовать шаблон Mustache для формулировки ответа на сообщение при обмене сообщениями InOut (где есть JMSReplyToзаголовок).
Если вы хотите использовать InOnly, получить сообщение и отправить его по другому адресу, вы можете использовать:
from("activemq:My.Queue").
to("mustache:com/acme/MyResponse.mustache").
to("activemq:Another.Queue");Можно указать, какой шаблон должен использовать компонент, динамически через заголовок, например:
from("direct:in").
setHeader(MustacheConstants.MUSTACHE_RESOURCE_URI).constant("path/to/my/template.mustache").
to("mustache:dummy?allowTemplateFromHeader=true");The Email Example
В этом примере мы хотим использовать шаблон Mustache для письма с подтверждением заказа. Шаблон письма в Mustache выглядит следующим образом:
Dear {{headers.lastName}}, {{headers.firstName}}
Spring Boot Auto-Configuration
При использовании mustache с Spring Boot обязательно используйте следующую зависимость Maven для поддержки автоматической настройки:
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-mustache-starter</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>Компонент поддерживает 7 опций, которые перечислены ниже.
camel.component.mustache.allow-context-map-all
-
Определяет, должна ли карта контекста разрешать доступ ко всем данным. По умолчанию доступен только текст и заголовки сообщения. Этот параметр можно включить для полного доступа к текущему Exchange и CamelContext. Это может представлять потенциальную угрозу безопасности, поскольку открывает доступ ко всем возможностям API CamelContext.
-
По умолчанию: false
-
Тип: Boolean
camel.component.mustache.allow-template-from-header
-
Разрешить или запретить использование шаблона ресурса из заголовка (по умолчанию -- false). Включение этого параметра позволяет указывать динамические шаблоны через заголовок сообщения. Однако это может рассматриваться как потенциальная уязвимость безопасности, если заголовок исходит от злоумышленника, поэтому используйте этот параметр с осторожностью.
-
По умолчанию: false
-
Тип: Boolean
camel.component.mustache.autowired-enabled
-
Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.
-
По умолчанию: true
-
Тип: Boolean
camel.component.mustache.content-cache
-
Устанавливает, использовать ли кэш содержимого ресурсов или нет.
-
По умолчанию: true
-
Тип: Boolean
camel.component.mustache.enabled
-
Включить ли автоматическую настройку компонента mustache . По умолчанию эта функция включена.
-
По умолчанию:
-
Тип: Boolean
camel.component.mustache.lazy-start-producer
-
Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.
-
По умолчанию: false
-
Тип: Boolean
camel.component.mustache.mustache-factory
-
Чтобы использовать пользовательскую MustacheFactory, используйте тип com.github.mustachejava.MustacheFactory.
-
По умолчанию:
-
Тип: MustacheFactory