Minio

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

Компонент Minio обеспечивает загрузку и получение объектов из/в сервис Minio.

Prerequisites

Для авторизованного доступа к контейнерам/папкам необходимо иметь действительные учетные данные.

URI Format

<span style="color: rgb(0,0,0);">minio://bucketName[?options]</span>

Контейнер будет автоматически создан, если он не существует.

Параметры запроса можно добавить к URI в следующем формате: ?options=value&option2=value&…​

Например, чтобы прочитать файл hello.txt из контейнера helloBucket, используйте следующий фрагмент кода:

from("minio://helloBucket?accessKey=yourAccessKey&secretKey=yourSecretKey&objectName=hello.txt")
  .to("file:/var/downloaded");

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 Close Body

  • Если эта опция включена (true) и includeBody также true, метод MinioObject.close() будет вызван при завершении обмена (exchange). Данная опция тесно связана с параметром includeBody. Если includeBody установлен в true, а autocloseBody -- в false, ответственность за закрытие потока MinioObject лежит на вызывающей стороне. Установка autocloseBody в true автоматически закроет поток MinioObject.

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

  • Тип: boolean

Auto Create Bucket

  • Автоматическое создание хранилища при его отсутствии.

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

  • Тип: boolean

Bucket Name

  • Обязательное поле - Имя хранилища (Bucket name).

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

  • Тип: String

Bypass Governance Mode

  • Установите этот флаг, если требуется обойти режим управления (bypassGovernanceMode) при удалении определённого объекта.

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

  • Тип: boolean

Custom Http Client

  • Установите кастомный HTTP-клиент для доступа с аутентификацией.

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

  • Тип: OkHttpClient

Delete After Read

  • Удаляет объекты из Minio после их получения. Удаление выполняется только в случае успешного завершения транзакции (Exchange committed). Если происходит откат (rollback), объект не удаляется. Если эта опция отключена (false), одни и те же объекты будут повторно извлекаться при каждом опросе. В этом случае необходимо использовать шаблон Idempotent Consumer EIP в маршруте для фильтрации дубликатов. Фильтрацию можно выполнять по заголовкам MinioConstants#BUCKET_NAME и MinioConstants#OBJECT_NAME, либо только по MinioConstants#OBJECT_NAME.

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

  • Тип: boolean

Delimiter

  • Разделитель, используемый в ListObjectsRequest для выборки только целевых объектов.

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

  • Тип: String

Destination Bucket Name

  • Имя целевого хранилища (Bucket name).

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

  • Тип: String

Destination Object Name

  • Тип: Имя объекта назначения.

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

  • Тип: String

Endpoint

  • Endpoint может быть URL, доменным именем, IPv4- или IPv6-адресом.

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

  • Тип: String

Include Body

  • Тип: Если значение true, тело сообщения (exchange body) будет содержать поток данных (stream) с содержимым файла. Если false, в заголовки будут записаны метаданные объекта Minio, но тело сообщения будет равно null.

    Данная опция тесно связана с опцией autocloseBody. Если includeBody установлен в true, а autocloseBody в false, ответственность за закрытие потока MinioObject ложится на вызывающий код. Установка autocloseBody в true приведёт к автоматическому закрытию потока MinioObject.

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

  • Тип: boolean

Include Folders

  • Флаг, используемый в ListObjectsRequest для включения папок в результат.

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

  • Тип: boolean

Include User Metadata

  • Флаг, используемый в ListObjectsRequest для получения объектов с пользовательскими метаданными.

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

  • Тип: boolean

Include Versions

  • Флаг, используемый в ListObjectsRequest для получения объектов с учётом версионности.

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

  • Тип: boolean

Length

  • Размер данных объекта в байтах, получаемых начиная с заданного смещения (offset).

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

  • Тип: long

Match ETag

  • Устанавливает параметра match ETag для получения объекта(ов).

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

  • Тип: String

Max Connections

  • Тип: Устанавливает значение параметра maxConnections в настройках клиента MinIO.

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

  • Тип: int

Max Messages Per Poll

  • Определяет максимальное количество сообщений для выборки за один опрос. Значение по умолчанию: 10. Укажите 0 или отрицательное число для снятия ограничений.

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

  • Тип: int

Minio Client

  • Автоматически внедряемая ссылка (Autowired) на объект Minio Client из реестра.

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

  • Тип: MinioClient

Modified Since

  • Установите параметр modifiedSince для получения объекта(ов).

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

  • Тип: ZonedDateTime

Move After Read

  • Тип: Перемещение объектов из хранилища в другое хранилище после их получения. Для выполнения операции должен быть задан параметр destinationBucket. Операция копирования выполняется только при успешном завершении транзакции (Exchange committed). В случае отката (rollback) объект не будет перемещен.

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

  • Тип: boolean

Not Match ETag

  • Установите параметр notMatchETag для получения объекта(ов).

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

  • Тип: String

Object Lock

  • Параметр, задаваемый во время создания нового хранилища.

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

  • Тип: boolean

Object Name

  • Извлекает объект с заданным именем (object name) из указанного хранилища.

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

  • Тип: String

Offset

  • Начальная позиция (в байтах) для чтения данных объекта.

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

  • Тип: long

Policy

  • Тип: Политика управления очередью, которая будет применена при вызове этого метода.

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

  • Тип: String

Prefix

  • Имя объекта начинается с указанного префикса.

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

  • Тип: String

Proxy Port

  • Тип: Номер порта TCP/IP. По умолчанию используются 80 для HTTP и 443 для HTTPS.

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

  • Тип: Integer

Recursive

  • Рекурсивный список (без эмуляции структуры директорий).

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

  • Тип: boolean

Region

  • Регион, в котором должен работать клиент MinIO. При использовании этого параметра требуется указывать название региона в нижнем регистре (например, 'ap-east-1'). Для указания региона используйте конструкцию Region.EU_WEST_1.id().

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

  • Тип: String

Secure

  • Флаг использования безопасного соединения (HTTPS) с сервисом MinIO.

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

  • Тип: boolean

Send Empty Message When Idle

  • Если потребитель (consumer) не получил файлов при опросе, можно активировать эту опцию для отправки пустого сообщения (без тела).

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

  • Тип: boolean

Server Side Encryption

  • Шифрование на стороне сервера.

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

  • Тип: ServerSideEncryption

Server Side Encryption Customer Key

  • Шифрование на стороне сервера (Server-Side Encryption) для исходного объекта при операциях копирования/перемещения.

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

  • Тип: ServerSideEncryptionCustomerKey

Start After

  • Тип: Получает список объектов в хранилище, начиная с указанного имени объекта.

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

  • Тип: String

Un Modified Since

  • Установите параметр un Modified Since для получения объекта(ов).

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

  • Тип: ZonedDateTime

Use Version1

  • Тип: При значении true используется версия 1 REST API.

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

  • Тип: boolean

Version Id

  • Укажите конкретный version_id объекта при его удалении.

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

  • Тип: String

Component scheduler properties

Backoff Error Threshold

  • Количество последовательных неудачных опросов (из-за ошибки), после которых должен начать действовать коэффициент понижения частоты опросов (backoffMultiplier).

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

  • Тип: int

Backoff Idle Threshold

  • Тип: Количество пустых опросов подряд, после которых должен начать действовать коэффициент понижения частоты опросов (backoffMultiplier).

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

  • Тип: int

Backoff Multiplier

  • Позволяет планируемому потребителю в режиме опроса снижать частоту опросов, если произошло несколько последовательных пустых опросов или ошибок. Множитель определяет количество опросов, которые будут пропущены перед следующей попыткой. При использовании этой опции также необходимо настроить параметры backoffIdleThreshold и/или backoffErrorThreshold.

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

  • Тип: int

Delay

  • Тип: Количество миллисекунд до следующего опроса.

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

  • Тип: long

Greedy

  • Если включен режим greedy, то ScheduledPollConsumer снова выполнится немедленно, если предыдущий опрос вернул 1 или больше сообщений.

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

  • Тип: boolean

Initial Delay

  • Количество миллисекунд до начала первого опроса.

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

  • Тип: long

Repeat Count

  • Устанавливает максимальный лимит количества срабатываний. Если вы установите значение 1, планировщик сработает только один раз. Если установить значение 5, он сработает пять раз. Значение ноль или отрицательное означает, что срабатывание будет происходить бесконечно.

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

  • Тип: long

Run Logging Level

  • Потребитель записывает в логи строку начала/завершения при опросе. Эта опция позволяет настроить уровень логирования для этого.

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

    • TRACE

    • DEBUG

    • INFO

    • WARN

    • ERROR

    • OFF

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

  • Тип: LoggingLevel

Scheduled Executor Service

  • Позволяет настроить пользовательский/общий пул потоков для использования потребителем. По умолчанию у каждого потребителя есть собственный пул потоков с одним потоком.

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

  • Тип: ScheduledExecutorService

Scheduler

  • Для использования планировщика cron из компонента camel-spring или camel-quartz. Используйте значение spring или quartz для встроенного планировщика.

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

  • Тип: Object

Scheduler Properties

  • Используется для настройки дополнительных свойств при использовании пользовательского планировщика или любого из планировщиков на основе Quartz или Spring.

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

  • Тип: Map

Start Scheduler

  • Указывает, должен ли планировщик запускаться автоматически.

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

  • Тип: boolean

Time Unit

  • Единица измерения времени для опций initialDelay и delay.

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

    • NANOSECONDS

    • MICROSECONDS

    • MILLISECONDS

    • SECONDS

    • MINUTES

    • HOURS

    • DAYS

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

  • Тип: TimeUnit

Use Fixed Delay

  • Управляет тем, будет ли использоваться фиксированная задержка или фиксированная частота.

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

  • Тип: boolean

Component security properties

Access Key

  • Секретный ключ доступа AWS (Secret Access Key) или ключ доступа MinIO. Если не указан, Camel будет подключаться к сервису анонимно.

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

  • Тип: String

Secret Key

  • Идентификатор ключа доступа AWS (Access Key ID) или секретный ключ MinIO. Если не задан, Camel подключится к сервису анонимно.

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

  • Тип: 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

Poll Strategy

  • Тип: Плагинируемая стратегия org.apache.camel.PollingConsumerPollingStrategy, позволяющая предоставить вашу собственную реализацию для управления обработкой ошибок, которые обычно возникают во время операции опроса до того, как Exchange был создан и маршрутизирован в Camel.

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

  • Тип: PollingConsumerPollStrategy