Jetty
Поддерживается только потребитель
Компонент Jetty предоставляет HTTP-конечные точки для потребления и создания HTTP-запросов. То есть компонент Jetty ведёт себя как простой веб-сервер.
Jetty работает на основе потоков, что означает, что полученные данные передаются в Camel в виде потока. Это означает, что содержимое потока можно прочитать только один раз. Если вы столкнулись с ситуацией, когда тело сообщения кажется пустым, или вам нужно получить доступ к данным Exchange.HTTP_RESPONSE_CODE несколько раз (например, при мультивещании или обработке ошибок с повторной доставкой), вам следует использовать кэширование потоков (Stream caching) или преобразовать тело сообщения в строку, которую можно безопасно перечитывать несколько раз.
Пользователям Maven необходимо добавить следующую зависимость в свой pom.xml для этого компонента:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jetty</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>URI format
<span style="color: rgb(0,0,0);">jetty:http://hostname[:port][/resourceUri][?options]</span>
Configuring Options
Компоненты настраиваются на двух отдельных уровнях:
-
component level
-
edpoint level
Configuring Component Options
На уровне компонента задаются основные и общие настройки, которые впоследствии наследуются endpoints. Это самый высокий уровень конфигурации.
Например, компонент может иметь настройки безопасности, учетные данные для аутентификации, URL-адреса для сетевых подключений и т. д.
Некоторые компоненты имеют всего несколько параметров, в то время как у других их может быть много. Поскольку компоненты обычно имеют предварительно настроенные значения по умолчанию, которые используются в большинстве случаев, вам может понадобиться настроить только несколько параметров компонента или вообще ничего не настраивать.
Компоненты можно настроить с использованием:
-
Component DSL.
-
Конфигурационного файла (application.properties, *.yaml files, etc).
-
Напрямую в Java code.
Configuring Endpoint Options
Обычно больше времени уходит на настройку endpoints, так как они обладают множеством параметров. Эти параметры позволяют настроить поведение endpoint в соответствии с вашими потребностями. Кроме того, параметры делятся на категории в зависимости от того, используется ли endpoint как потребитель (from), как производитель (to) или в обеих ролях.
Настройка endpoints чаще всего выполняется непосредственно в URI endpoint в виде параметров пути и запроса. Также вы можете использовать Endpoint DSL и DataFormat DSL как типобезопасный способ настройки endpoints и форматов данных в Java.
Хорошей практикой при настройке параметров является использование Property Placeholders.
Property placeholders предоставляют несколько преимуществ:
-
Помогают избежать использования жестко закодированных URL-адресов, номеров портов, конфиденциальной информации и других настроек.
-
Позволяют вынести конфигурацию за пределы кода.
-
Делают код более гибким и удобным для повторного использования.
Component properties
Async
-
Настраивает потребителя на работу в асинхронном режиме.
-
По умолчанию: false
-
Тип: boolean
Chunked
-
Если эта опция имеет значение false, Servlet отключит потоковую передачу HTTP и установит заголовок content-length в ответе.
-
По умолчанию: true
-
Тип: boolean
Continuation Timeout
-
Позволяет установить таймаут в миллисекундах при использовании Jetty в качестве потребителя (сервера). По умолчанию Jetty использует 30000. Вы можете использовать значение = 0, чтобы таймаут никогда не истекал. Если таймаут истекает, запрос будет завершён, и Jetty вернёт клиенту HTTP-ошибку 503. Эта опция используется только при использовании Jetty с асинхронным механизмом маршрутизации.
-
По умолчанию: 30000
-
Тип: Long
Disable Stream Cache
-
Определяет, кэшируется ли исходный входной поток или нет. Потребитель Camel (camel-servlet, camel-jetty и т.д.) по умолчанию кэширует входной поток, чтобы поддерживать его многократное чтение и гарантировать, что Camel сможет извлечь все данные из потока. Однако вы можете установить эту опцию в true, если вам, например, нужен доступ к исходному потоку, например, для его прямой потоковой передачи в файл или другое постоянное хранилище. DefaultHttpBinding скопирует входной поток запроса в кэш потока и поместит его в тело сообщения, если эта опция имеет значение false, чтобы поддерживать многократное чтение потока. Если вы используете Servlet для моста/проксирования endpoint, рассмотрите возможность включения этой опции для повышения производительности, если вам не нужно многократно читать полезную нагрузку сообщения. Производитель (camel-http) по умолчанию кэширует поток тела ответа. Если установить эту опцию в true, производители не будут кэшировать поток тела ответа, а будут использовать поток ответа как есть (поток можно прочитать только один раз) в качестве тела сообщения.
-
По умолчанию: false
-
Тип: boolean
Enable CORS
-
Если опция имеет значение true, сервер Jetty настроит CrossOriginFilter, который поддерживает CORS из коробки.
-
По умолчанию: false
-
Тип: boolean
Enable Jmx
-
Если эта опция имеет значение true, поддержка JMX в Jetty будет включена для этой endpoint.
-
По умолчанию: false
-
Тип: boolean
Enable Multipart Filter
-
Определяет, включён ли org.apache.camel.component.jetty.MultiPartFilter или нет. Вы должны установить это значение в false при мостах endpoints, чтобы гарантировать, что многокомпонентные запросы также проксируются/передаются.
-
По умолчанию: false
-
Тип: boolean
Http Method Restrict
-
Используется для разрешения потребления только в случае совпадения HttpMethod, например, GET/POST/PUT и т.д. Несколько методов могут быть указаны через запятую.
-
По умолчанию:
-
Тип: String
Http Uri
-
Обязательный параметр. URL HTTP-endpoint для вызова.
-
По умолчанию:
-
Тип: URI
Match On Uri Prefix
-
Тип: Определяет, должен ли потребитель пытаться найти целевого потребителя, сопоставляя префикс URI, если точное совпадение не найдено.
-
По умолчанию: false
-
Тип: boolean
Mute Exception
-
Если включена опция и обработка Exchange завершилась ошибкой на стороне потребителя, тело ответа не будет содержать трассировку стека исключения.
-
По умолчанию: false
-
Тип: boolean
Response Buffer Size
-
Использует пользовательский размер буфера для jakarta.servlet.ServletResponse.
-
По умолчанию:
-
Тип: Integer
Send Date Header
-
Если опция имеет значение true, сервер jetty отправит заголовок даты клиенту, который отправляет запрос.
Примечание: убедитесь, что никакая другая endpoint camel-jetty не использует тот же порт, иначе эта опция может не работать должным образом.
-
По умолчанию: false
-
Тип: boolean
Send Server Version
-
Если опция имеет значение true, jetty отправит заголовок сервера с информацией о версии jetty клиенту, который отправляет запрос. Примечание: убедитесь, что никакая другая endpoint camel-jetty не использует тот же порт, иначе эта опция может не работать должным образом.
-
По умолчанию: true
-
Тип: boolean
Session Support
-
Определяет, следует ли включить менеджер сессий на стороне сервера Jetty.
-
По умолчанию: false
-
Тип: boolean
Transfer Exception
-
Если опция включена и обработка Exchange завершилась ошибкой на стороне потребителя, и если вызванное исключение было отправлено обратно в ответе в сериализованном виде с типом содержимого application/x-java-serialized-object. На стороне производителя исключение будет десериализовано и выброшено как есть, вместо HttpOperationFailedException. Вызванное исключение должно быть сериализовано. По умолчанию эта функция отключена. Если вы включите её, учтите, что Java будет десериализовать входящие данные из запроса в Java, что может представлять потенциальный риск для безопасности.
-
По умолчанию: false
-
Тип: boolean
Use Continuation
-
Определяет, использовать ли продолжения (continuations) Jetty для сервера Jetty.
-
По умолчанию:
-
Тип: Boolean
Component security properties
Ssl Context Parameters
-
Для настройки безопасности с использованием SSLContextParameters.
-
По умолчанию:
-
Тип: SSLContextParameters
Component advanced properties
Bridge Error Handler
-
Тип: Предоставляет возможность связать потребителя с маршрутизатором Error Handler Camel. Это позволяет обрабатывать исключения (если возможно), возникающие при получении входящих сообщений потребителем Camel, в виде сообщений, передаваемых в маршрутизатор Error Handler.
Важно: Это возможно только в том случае, если сторонний компонент позволяет Camel получать уведомления о возникших исключениях. Некоторые компоненты обрабатывают исключения только внутренне, из-за чего использование bridgeErrorHandler становится невозможным. В некоторых случаях мы можем доработать компонент Camel, чтобы интегрировать его со сторонним компонентом и сделать такую возможность доступной в будущих выпусках. По умолчанию потребитель использует org.apache.camel.spi.ExceptionHandler для обработки исключений, которые логируются с уровнем WARN или ERROR и игнорируются.
-
По умолчанию: false
-
Тип: boolean
Eager Check Content Available
-
Определяет, следует ли активно проверять, есть ли содержимое в HTTP-запросах, если заголовок content-length равен 0 или отсутствует. Это может быть включено, если HTTP-клиенты не отправляют потоковые данные.
-
По умолчанию: false
-
Тип: boolean
Exception Handler
-
Позволяет потребителю использовать собственный ExceptionHandler.
Обратите внимание, что если включена опция bridgeErrorHandler, то эта настройка не используется. По умолчанию потребитель обрабатывает исключения, которые логируются с уровнем WARN или ERROR и игнорируются.
-
По умолчанию:
-
Тип: ExceptionHandler
Exchange Pattern
-
Определяет шаблон взаимодействия, который применяется, когда потребитель создает новый обмен (exchange).
Возможные значения:
-
InOnly
-
InOut
-
-
По умолчанию:
-
Тип: ExchangePattern
Filter Init Parameters
-
Тип: Конфигурация параметров инициализации фильтра. Эти параметры будут применены к списку фильтров перед запуском сервера jetty.
-
По умолчанию:
-
Тип: Map
Filters
-
Позволяет использовать пользовательские фильтры, которые добавляются в список и могут быть найдены в реестре. Несколько значений могут быть разделены запятыми.
-
По умолчанию:
-
Тип: List
Handlers
-
Тип: Указывает набор экземпляров Handler, разделённых запятыми, для поиска в вашем реестре. Эти обработчики добавляются в контекст servlet Jetty (например, для добавления безопасности). Важно: вы не можете использовать разные обработчики с разными endpoints Jetty, использующими один и тот же номер порта. Обработчики связаны с номером порта. Если вам нужны разные обработчики, используйте разные номера портов.
-
По умолчанию:
-
Тип: List
Header Filter Strategy
-
Используется Чтобы применить собственную стратегию фильтрации заголовков org.apachч.camel.spi.HeaderFilterStrategy для фильтрации заголовков сообщений Camel.
-
По умолчанию:
-
Тип: HeaderFilterStrategy
Http Binding
-
Тип: Использует пользовательский HttpBinding для управления сопоставлением между сообщением Camel и HttpClient.
-
По умолчанию:
-
Тип: HttpBinding
Map Http Message Body
-
Если эта опция имеет значение true, то тело обмена (IN exchange Body) будет сопоставлено с телом HTTP. Установка значения false позволит избежать HTTP-сопоставления.
-
По умолчанию: true
-
Тип: boolean
Map Http Message Form Url Encoded Body
-
Если эта опция имеет значение true, то тело обмена в формате Form Encoded (IN exchange Form Encoded body) будет сопоставлено с HTTP. Установка значения false позволит избежать сопоставления тела в формате Form Encoded.
-
По умолчанию: true
-
Тип: boolean
Map Http Message Headers
-
Если эта опция имеет значение true, то заголовки обмена (IN exchange Headers) будут сопоставлены с HTTP-заголовками. Установка значения false позволит избежать сопоставления HTTP-заголовков.
-
По умолчанию: true
-
Тип: boolean
Multipart Filter
-
Позволяет использовать пользовательский фильтр для многокомпонентных данных (multipart filter). Примечание: установка multipartFilterRef принудительно устанавливает значение enableMultipartFilter в true.
-
По умолчанию:
-
Тип: Filter
Options Enabled
-
Указывает, следует ли включить HTTP OPTIONS для этого потребителя Servlet. По умолчанию OPTIONS отключён.
-
По умолчанию: false
-
Тип: boolean
Trace Enabled
-
Указывает, следует ли включить HTTP TRACE для этого потребителя Servlet. По умолчанию TRACE отключён.
-
По умолчанию: false
-
Тип: boolean