Infinispan Embedded

Поддерживаются как производитель, так и потребитель

Этот компонент позволяет взаимодействовать с распределённой сетью данных / кэшем Infinispan. Infinispan -- это чрезвычайно масштабируемая, высокодоступная платформа для хранения данных и сетей данных, написанная на Java.

Компонент camel-infinispan-embedded включает следующие функции:

  1. Локальный потребитель (Local Camel Consumer): получает уведомления об изменениях в кэше и отправляет их для обработки. Это может быть выполнено синхронно или асинхронно, а также поддерживается для реплицированного или распределённого кэша.

  2. Локальный производитель (Local Camel Producer): производитель создаёт и отправляет сообщения в endpoint. Производитель camel-infinispan использует операции GET, PUT, REMOVE и CLEAR. Локальный производитель также поддерживается для реплицированного или распределённого кэша.

События обрабатываются асинхронно.

Если вы используете Maven, вам необходимо добавить следующую зависимость в ваш файл pom.xml:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-infinispan-embedded</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);">infinispan-embedded://cacheName?[options]</span>

Производитель (producer) позволяет отправлять сообщения в локальный кэш Infinispan. Потребитель (consumer) позволяет прослушивать события из локального кэша Infinispan.

Если конфигурация кэша не предоставлена, embedded cacheContainer создаётся непосредственно в компоненте.

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

Cache Name

  • Обязательный параметр. Имя кэша для использования. Используйте current, чтобы использовать имя существующего кэша из текущего настроенного менеджера кэшей. Или используйте default для имени менеджера кэшей по умолчанию.

  • По умолчанию:

  • Тип: String

Clustered Listener

  • Если значение true, слушатель будет установлен для всего кластера.

  • По умолчанию: false

  • Тип: boolean

Custom Listener

  • Возвращает используемый пользовательский слушатель (listener), если он предоставлен.

  • По умолчанию:

  • Тип: InfinispanEmbeddedCustomListener

Event Types

  • Указывает набор типов событий для регистрации потребителем (consumer). Несколько событий могут быть разделены запятыми. Возможные типы событий: CACHE_ENTRY_ACTIVATED, CACHE_ENTRY_PASSIVATED, CACHE_ENTRY_VISITED, CACHE_ENTRY_LOADED, CACHE_ENTRY_EVICTED, CACHE_ENTRY_CREATED, CACHE_ENTRY_REMOVED, CACHE_ENTRY_MODIFIED, TRANSACTION_COMPLETED, TRANSACTION_REGISTERED, CACHE_ENTRY_INVALIDATED, CACHE_ENTRY_EXPIRED, DATA_REHASHED, TOPOLOGY_CHANGED, PARTITION_STATUS_CHANGED, PERSISTENCE_AVAILABILITY_CHANGED.

  • По умолчанию:

  • Тип: String

Query Builder

  • Тип: Указывает построитель запросов (query builder).

  • По умолчанию:

  • Тип: InfinispanQueryBuilder

Sync

  • Если значение true, потребитель будет получать уведомления синхронно.

  • По умолчанию: true

  • Тип: boolean

Component advanced properties

Bridge Error Handler

  • Предоставляет возможность связать потребителя с маршрутизатором Error Handler Camel. Это позволяет обрабатывать исключения (если возможно), возникающие при получении входящих сообщений потребителем Camel, в виде сообщений, передаваемых в маршрутизатор Error Handler.

    Важно: Это возможно только в том случае, если сторонний компонент позволяет Camel получать уведомления о возникших исключениях. Некоторые компоненты обрабатывают исключения только внутренне, из-за чего использование bridgeErrorHandler становится невозможным. В некоторых случаях мы можем доработать компонент Camel, чтобы интегрировать его со сторонним компонентом и сделать такую возможность доступной в будущих выпусках. По умолчанию потребитель использует org.apache.camel.spi.ExceptionHandler для обработки исключений, которые логируются с уровнем WARN или ERROR и игнорируются.

  • По умолчанию: false

  • Тип: boolean

Cache Container

  • Автоматически подключаемый параметр. Указывает контейнер кэша для подключения.

  • По умолчанию:

  • Тип: RemoteCacheManager

Cache Container Configuration

  • Автоматически подключаемый параметр. Конфигурация CacheContainer. Используется, если cacheContainer не определён.

  • По умолчанию:

  • Тип: Configuration

Configuration Uri

  • Тип: URI, характерный для конкретной реализации CacheManager.

  • По умолчанию:

  • Тип: String

Exception Handler

  • Позволяет потребителю использовать собственный ExceptionHandler.

    Обратите внимание, что если включена опция bridgeErrorHandler, то эта настройка не используется. По умолчанию потребитель обрабатывает исключения, которые логируются с уровнем WARN или ERROR и игнорируются.

  • По умолчанию:

  • Тип: ExceptionHandler

Exchange Pattern

  • Тип: Определяет шаблон взаимодействия, который применяется, когда потребитель создает новый обмен (exchange).

    Возможные значения:

    • InOnly

    • InOut

  • По умолчанию:

  • Тип: ExchangePattern

Flags

  • Список флагов org.infinispan.context.Flag, разделённых запятыми, которые по умолчанию применяются к каждому вызову кэша.

  • По умолчанию:

  • Тип: String

Remapping Function

  • Тип: Установите конкретную функцию пересопоставления (remappingFunction) для использования в операции compute.

  • По умолчанию:

  • Тип: BiFunction

Result Header

  • Сохраняет результат операции в заголовке вместо тела сообщения. По умолчанию resultHeader == null, и результат запроса сохраняется в теле сообщения, при этом любое существующее содержимое тела сообщения удаляется. Если resultHeader задан, его значение используется как имя заголовка для сохранения результата запроса, а исходное тело сообщения сохраняется. Это значение может быть переопределено входящим заголовком с именем: CamelInfinispanOperationResultHeader.

  • По умолчанию:

  • Тип: String