Google Storage

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

Компонент Google Storage обеспечивает доступ к облачному хранилищу Google через библиотеку хранилища Google Java .

Пользователям Maven необходимо добавить следующую зависимость в свой pom.xml для этого компонента:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-google-storage</artifactId>
    <!-- use the same version as your Camel core version -->
    <version>x.x.x</version>
</dependency>

Authentication Configuration

Аутентификация компонента Google Storage предназначена для использования с учётными записями сервиса GCP (Google Cloud Platform). Для получения дополнительной информации обратитесь к руководству по аутентификации Google Storage.

Когда у вас есть ключ учётной записи сервиса, вы можете предоставить учётные данные для аутентификации в коде вашего приложения. Учётные данные безопасности Google могут быть заданы через endpoint компонента:

String endpoint = "google-storage://myCamelBucket?serviceAccountKey=/home/user/Downloads/my-key.json";

Или путём указания пути к файлу учётных данных GCP:

Предоставьте учётные данные для аутентификации в коде вашего приложения, установив переменную окружения GOOGLE_APPLICATION_CREDENTIALS :

<span style="color: rgb(0,0,0);">export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/my-key.json"</span>

URI Format

<span style="color: rgb(0,0,0);">google-storage://bucketNameOrArn?[options]</span>

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

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

from("google-storage://myCamelBucket?serviceAccountKey=/home/user/Downloads/my-key.json&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 Create Bucket

  • Настройка автоматического создания хранилища с именем bucketName.

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

  • Тип: boolean

Bucket Name

  • Требуется указать имя хранилища (Bucket name) или ARN.

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

  • Тип: String

Delete After Read

  • Удалять объекты из хранилища после их получения. Удаление выполняется только в случае успешного подтверждения (commit) обмена. Если происходит откат (rollback), объект не удаляется. Если этот параметр установлен в false, одни и те же объекты будут извлекаться при каждом опросе снова и снова.

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

  • Тип: boolean

Destination Bucket

  • Определяет целевое хранилище, в которое объект должен быть перемещен, если moveAfterRead установлено в true.

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

  • Тип: String

Download File Name

  • Папка или имя файла, используемые при загрузке blob. По умолчанию указывается имя папки, а имя файла совпадает с именем blob. Например, если установить значение mydownload, это будет эквивалентно mydownload/$\{file:name}. Можно использовать динамические выражения для более точного управления. Например, $\{date:now:yyyyMMdd}/$\{file:name} сохранит blob в подпапках по дате. В качестве динамических токенов для имени blob поддерживаются только $\{file:name} и $\{file:name.noext}

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

  • Тип: String

Filter

  • Тип: Регулярное выражение для фильтрации blobs, включающее только те, чьи имена ему соответствуют.

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

  • Тип: String

Include Body

  • Если установлено в true, объектный обмен будет обработан и помещен в тело сообщения. Если false, поток объекта будет передан в тело сообщения без изменений, а метаданные объекта будут установлены в заголовках.

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

  • Тип: boolean

Include Folders

  • Если установлено в true, папки/директории будут обработаны. Если false, они будут игнорироваться, и для них не будут создаваться обмены (Exchanges).

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

  • Тип: boolean

Move After Read

  • Перемещает объекты из исходного хранилища в другое хранилище после их получения. Для выполнения этой операции необходимо установить параметр destinationBucket.

    Копирование объекта выполняется только при успешном подтверждении (commit) обмена. Если происходит откат (rollback), объект не перемещается.

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

  • Тип: boolean

Send Empty Message When Idle

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

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

  • Тип: boolean

Service Account Key

  • Ключ учетной записи службы, который можно использовать в качестве учетных данных для клиента хранилища. По умолчанию может загружаться из classpath, но также можно использовать префиксы classpath:, file: или http: для загрузки ресурса из разных систем.

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

  • Тип: String

Storage Class

  • Класс хранилища Cloud Storage, который будет использоваться при создании новых хранилищ (buckets).

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

  • Тип: StorageClass

Storage Client

  • Автоматически внедряемый (Autowired) клиент хранилища (Storage client).

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

  • Тип: Storage

Storage Location

  • Расположение в Cloud Storage, которое будет использоваться при создании новых хранилищ (buckets).

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

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

  • OAuth 2 токен доступа. Обычно он истекает через час, поэтому для длительного использования рекомендуется использовать refreshToken.

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

  • Тип: String

Client Secret

  • Секретный ключ клиента приложения Календаря.

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

  • Тип: String

Refresh Token

  • Тип: OAuth 2 refresh token. С его помощью компонент Google Calendar может получать новый accessToken каждый раз, когда текущий истекает -- это необходимо для долгосрочного использования приложения.

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

  • Тип: String

Service Account Key

  • Ключ учетной записи службы в формате JSON для аутентификации приложения как учетной записи службы. Принимает base64, добавляя префикс base64:.

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

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