gRPC
Поддерживаются как производитель, так и потребитель
Компонент gRPC позволяет вызывать или предоставлять сервисы удалённого вызова процедур (RPC) с использованием формата обмена Protocol Buffers (protobuf) через транспорт HTTP/2.
Пользователям Maven необходимо добавить следующую зависимость в свой pom.xml для этого компонента:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-grpc</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);">grpc:host:port/service[?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
Auto Discover Server Interceptors
-
Настройка механизма autoDiscoverServerInterceptors. Если установлено в true, компонент автоматически будет искать экземпляры ServerInterceptor в реестре. В противном случае этот шаг будет пропущен.
-
По умолчанию: true
-
Тип: boolean
Consumer Strategy
-
Этот параметр определяет стратегию верхнего уровня для обработки запросов и ответов сервиса в потоковом режиме. Если выбрана стратегия AGGREGATION, все запросы будут накапливаться в списке, затем передаваться в поток, а накопленные ответы будут отправлены отправителю. Если выбрана стратегия PROPAGATION, запрос отправляется в поток, и ответ немедленно отправляется обратно отправителю. Если выбрана стратегия DELEGATION, запрос отправляется в поток, но ответ не генерируется, так как предполагается, что все необходимые ответы будут отправлены в другой части маршрута. Стратегия делегирования всегда используется с routeControlledStreamObserver=true, чтобы обеспечить выполнение этого предположения.
Возможные значения:
-
AGGREGATION
-
PROPAGATION
-
DELEGATION
-
-
По умолчанию: PROPAGATION
-
Тип: GrpcConsumerStrategy
Flow Control Window
-
Размер окна управления потоком HTTP/2 (MiB).
-
По умолчанию: 1048576
-
Тип: int
Forward On Completed
-
Определяет, должны ли события onCompleted отправляться в маршрут Camel.
-
По умолчанию: false
-
Тип: boolean
Forward On Error
-
Определяет, должны ли события onError отправляться в маршрут Camel. Исключения будут установлены в качестве тела сообщения.
-
По умолчанию: false
-
Тип: boolean
Host
-
Обязательно: Имя хоста сервера gRPC. Для потребителя это localhost или 0.0.0.0, а для продюсера -- удаленное имя хоста сервера.
-
По умолчанию:
-
Тип: String
Max Concurrent Calls Per Connection
-
Максимальное количество одновременных вызовов, разрешенных для каждого входящего серверного соединения. По умолчанию без ограничений.
-
По умолчанию: 2147483647
-
Тип: int
Max Message Size
-
Максимальный размер сообщения, разрешенный для получения/отправки (MiB).
-
По умолчанию: 4194304
-
Тип: int
Port
-
Обязательный параметр -- локальный или удаленный порт gRPC-сервера.
-
По умолчанию:
-
Тип: int
Route Controlled Stream Observer
-
Позволяет маршруту управлять наблюдателем потока. Если этот параметр установлен в true, то наблюдатель ответа gRPC-вызова будет установлен с именем GrpcConstants.GRPC_RESPONSE_OBSERVER в объекте Exchange. Обратите внимание, что методы onNext(), onError(), onCompleted() наблюдателя потока должны вызываться в маршруте.
-
По умолчанию: false
-
Тип: boolean
Service
-
Требуется полное имя сервиса из файла дескриптора протокола буфера (имя пакета с точкой перед именем определения сервиса).
-
По умолчанию:
-
Тип: String
Component security properties
Authentication Type
-
Способ аутентификации, применяемый до установления SSL/TLS соединения.
Возможные значения:
-
NONE
-
GOOGLE
-
JWT
-
-
По умолчанию: NONE
-
Тип: GrpcAuthType
Jwt Algorithm
-
Алгоритм подписи JSON Web Token (JWT).
Возможные значения:
-
HMAC256
-
HMAC384
-
HMAC512
-
-
По умолчанию: HMAC256
-
Тип: JwtAlgorithm
Jwt Issuer
-
JSON Web Token issuer.
-
По умолчанию:
-
Тип: String
Jwt Secret
-
JSON Web Token secret.
-
По умолчанию:
-
Тип: String
Jwt Subject
-
Тип: JSON Web Token subject.
-
По умолчанию:
-
Тип: String
Key Cert Chain Resource
-
Ресурс файла цепочки сертификатов X.509 в формате PEM.
-
По умолчанию:
-
Тип: String
Key Password
-
Тип: Пароль для файла приватного ключа в формате PKCS#8
-
По умолчанию:
-
Тип: String
Key Resource
-
Ссылка на ресурс файла приватного ключа в формате PKCS#8 в формате PEM.
-
По умолчанию:
-
Тип: String
Negotiation Type
-
Тип: Определяет тип переговоров безопасности, используемый для коммуникации HTTP/2.
Возможные значения:
-
TLS
-
PLAINTEXT_UPGRADE
-
PLAINTEXT
-
-
По умолчанию: PLAINTEXT
-
Тип: NegotiationType
Service Account Resource
-
Ссылка на файл ключа учетной записи службы в формате JSON, поддерживаемая Google Cloud SDK.
-
По умолчанию:
-
Тип: String
Trust Cert Collection Resource
-
.Ресурсный файл коллекции доверенных сертификатов в формате PEM для проверки сертификата удаленной endpoint’s.
-
По умолчанию:
-
Тип: String
Component advanced properties
Bridge Error Handler
-
Тип: Предоставляет возможность связать потребителя с маршрутизатором Error Handler Camel. Это позволяет обрабатывать исключения (если возможно), возникающие при получении входящих сообщений потребителем Camel, в виде сообщений, передаваемых в маршрутизатор Error Handler.
Важно: Это возможно только в том случае, если сторонний компонент позволяет Camel получать уведомления о возникших исключениях. Некоторые компоненты обрабатывают исключения только внутренне, из-за чего использование bridgeErrorHandler становится невозможным. В некоторых случаях мы можем доработать компонент Camel, чтобы интегрировать его со сторонним компонентом и сделать такую возможность доступной в будущих выпусках. По умолчанию потребитель использует org.apache.camel.spi.ExceptionHandler для обработки исключений, которые логируются с уровнем WARN или ERROR и игнорируются.
-
По умолчанию: false
-
Тип: boolean
Exception Handler
-
Позволяет потребителю использовать собственный ExceptionHandler.
Обратите внимание, что если включена опция bridgeErrorHandler, то эта настройка не используется. По умолчанию потребитель обрабатывает исключения, которые логируются с уровнем WARN или ERROR и игнорируются.
-
По умолчанию:
-
Тип: ExceptionHandler
Exchange Pattern
-
Определяет шаблон взаимодействия, который применяется, когда потребитель создает новый обмен (exchange).
Возможные значения:
-
InOnly
-
InOut
-
-
По умолчанию:
-
Тип: ExchangePattern
Synchronous
-
Тип: Определяет, должен ли строго использоваться синхронный режим обработки.
-
По умолчанию: false
-
Тип: boolean