Dataset

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

Тестирование распределенной и асинхронной обработки известно своей сложностью. Endpoints Mock, DataSet и DataSet Test работают с Camel Testing Framework, чтобы упростить юнит и интеграционное тестирование, используя Enterprise integration Patterns и широкий набор компонентов Camel в сочетании с мощной интеграцией с Beans.

Компонент DataSet предоставляет механизм для легкого проведения нагрузочного и стресс-тестирования вашей системы. Он работает, позволяя создавать экземпляры DataSet как источник сообщений, а также как способ проверки того, что набор данных был получен.

Camel будет использовать логгер пропускной способности при отправке набора данных.

URI format

dataset:name[?options]

Где name используется для поиска instance DataSet в реестре.

Camel включает в себя реализацию поддержки компонента org.apache.camel.component.dataset.DataSet, класс org.apache.camel.component.dataset.DataSetSupport, который может быть использован как основа для создания собственного набора данных.

Также в Camel имеются реализации, которые можно использовать для тестирования:

  • org.apache.camel.component.dataset.SimpleDataSet

  • org.apache.camel.component.dataset.ListDataSet

  • org.apache.camel.component.dataset.FileDataSet

все из которых наследуют класс DataSetSupport.

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

Data Set Index

  • Управляет поведением заголовка CamelDataSetIndex.

    • Если установлено значение off (для потребителя), заголовок не будет установлен.

    • Если установлено значение strict (для потребителя), заголовок будет установлен.

    • Если установлено значение lenient (для потребителя), заголовок также будет установлен.

    • В режиме off (для производителя) значение заголовка не проверяется и не устанавливается, если оно отсутствует.

    • В режиме strict (для производителя) заголовок обязателен и будет проверен.

    • В режиме lenient (для производителя) заголовок будет проверен, если присутствует, и будет установлен, если отсутствует.

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

    • strict

    • lenient

    • off

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

  • Тип: String

Initial Delay

  • Время в миллисекундах, которое нужно ожидать перед началом отправки сообщений.

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

  • Тип: long

Min Rate

  • Подождать, пока DataSet не соберет как минимум это количество сообщений.

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

  • Тип: int

Name

  • Обязательно Имя DataSet для поиска в реестре.

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

  • Тип: DataSet

  • Тип: Preload Size

  • Устанавливает, сколько сообщений должно быть предварительно загружено (отправлено) до завершения инициализации маршрута.

  • 0

  • long

Produce Delay

  • Позволяет указать задержку, которая будет применяться при отправке сообщения потребителем (для имитации медленной обработки).

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

  • Тип: long

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