MongoDB GridFS

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

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

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-mongodb-gridfs</artifactId>
    <version>x.y.z</version>
    <!-- use the same version as your Camel core version -->
</dependency>

URI format

mongodb-gridfs:connectionBean?database=databaseName&amp;bucket=bucketName[&amp;moreOptions...]

Configuring Options

Компоненты Camel настраиваются на двух отдельных уровнях:

  • уровень компонентов

  • уровень конечной точки

Configuring Component Options

На уровне компонентов задаются общие и общие конфигурации, которые затем наследуются конечными точками. Это самый высокий уровень конфигурации.

Например, компонент может иметь настройки безопасности, учетные данные для аутентификации, URL-адреса для сетевого подключения и т. д.

У некоторых компонентов всего несколько параметров, а у других -- много. Поскольку компоненты обычно имеют предустановленные значения по умолчанию, которые широко используются, зачастую вам может потребоваться настроить лишь несколько параметров компонента, а то и вовсе ни одного.

Вы можете настроить компоненты, используя:

  • Компонент DSL (opens in a new tab) .

  • в файле конфигурации ( application.propertiesфайлы *.yaml, и т.д.).

  • непосредственно в коде Java.

Configuring Endpoint Options

Настройка конечных точек обычно занимает больше времени, поскольку у них есть множество параметров. Эти параметры помогают вам настроить функции конечной точки. Параметры также классифицируются по тому, используется ли конечная точка как потребитель ( от ), как производитель ( от ) или и то, и другое.

Конечные точки чаще всего настраиваются непосредственно в URI конечной точки в виде параметров пути и запроса . Вы также можете использовать Endpoint DSL (opens in a new tab) и DataFormat DSL (opens in a new tab) в качестве типобезопасного способа настройки конечных точек и форматов данных в Java.

Хорошей практикой при настройке параметров является использование заполнителей свойств (opens in a new tab) .

Заполнители свойств обеспечивают несколько преимуществ:

  • Они помогают предотвратить использование жестко запрограммированных URL-адресов, номеров портов, конфиденциальной информации и других настроек.

  • Они позволяют вынести конфигурацию за пределы кода.

  • Они помогают коду стать более гибким и пригодным для повторного использования.

В следующих двух разделах перечислены все параметры, сначала для компонента, а затем для конечной точки.

Component Options

Компонент MongoDB GridFS поддерживает 3 параметра, которые перечислены ниже.

bridgeErrorHandler (consumer)

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

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

  • Тип: boolean

lazyStartProducer (producer)

  • Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.

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

  • Тип: boolean

autowiredEnabled (advanced)

  • Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.

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

  • Тип: boolean

Endpoint Options

Конечная точка MongoDB GridFS настраивается с использованием синтаксиса URI:

mongodb-gridfs:connectionBean

Со следующими параметрами пути и запроса :

Path Parameters (1 parameters)

connectionBean (common)

  • Обязательное имя com.mongodb.client.MongoClient для использования..

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

  • Тип: String

Query Parameters (16 parameters)

bucket (common)

  • Задаёт имя контейнера GridFS в базе данных. По умолчанию -- fs.

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

  • Тип: String

database (common)

  • Обязательно Задает имя целевой базы данных MongoDB.

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

  • Тип: String

readPreference (common)

  • Устанавливает настройку чтения MongoDB ReadPreference для подключения Mongo. Настройки чтения, заданные непосредственно для подключения, будут переопределены этой настройкой. Для определения переданного значения readPreference используется служебный метод com.mongodb.ReadPreference#valueOf(String). Примеры возможных значений: «ближайший», «первичный», «вторичный» и т. д.

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

  • Тип: ReadPreference

writeConcern (common)

  • Тип: Устанавливает WriteConcern для операций записи в MongoDB, используя стандартные. Определяется на основе полей класса WriteConcern путем вызова метода WriteConcern#valueOf(String).

    Значения перечисления:

    • ACKNOWLEDGED

    • W1

    • W2

    • W3

    • UNACKNOWLEDGED

    • JOURNALED

    • MAJORITY

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

  • Тип: WriteConcern

delay (consumer)

  • Устанавливает задержку между опросами в Consumer. Значение по умолчанию -- 500 мс.

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

  • Тип: long

fileAttributeName (consumer)

  • Если QueryType использует FileAttribute, это задаёт имя используемого атрибута. По умолчанию используется метод Camel.

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

  • Тип: String

initialDelay (consumer)

  • Задаёт начальную задержку (initialDelay) перед началом опроса потребителем. Значение по умолчанию -- 1000 мс.

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

  • Тип: long

persistentTSCollection (consumer)

  • Если QueryType использует постоянную метку времени, это задает имя коллекции в базе данных для хранения метки времени.

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

  • Тип: String

persistentTSObject (consumer)

  • Если QueryType использует постоянную метку времени, это идентификатор объекта в коллекции для хранения метки времени.

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

  • Тип: String

query (consumer)

  • Дополнительные параметры запроса (в JSON), которые используются для настройки запроса, используемого для поиска файлов в GridFsConsumer.

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

  • Тип: String

queryStrategy (consumer)

  • Задаёт стратегию запроса, используемую для поиска новых файлов. Значение по умолчанию -- Timestamp.

    Значения перечисления:

    • TimeStamp

    • PersistentTimestamp

    • FileAttribute

    • TimeStampAndFileAttribute

    • PersistentTimestampAndFileAttribute

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

  • Тип: QueryStrategy

bridgeErrorHandler (consumer (advanced))

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

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

  • Тип: boolean

exceptionHandler (consumer (advanced))

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

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

  • Тип: ExceptionHandler

exchangePattern (consumer (advanced))

  • Устанавливает шаблон обмена, когда потребитель создает обмен.

    Значения перечисления:

    • InOnly

    • InOut

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

  • Тип: ExchangePattern

operation (producer)

  • Тип: Задает операцию, которую эта конечная точка будет выполнять в отношении GridFs.

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

  • Тип: String

lazyStartProducer (producer (advanced))

  • Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.

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

  • Тип: boolean

Message Headers

Компонент MongoDB GridFS поддерживает 11 заголовков сообщений, которые перечислены ниже:

CamelFileContentType (consumer)

Constant: FILE_CONTENT_TYPE (opens in a new tab)

  • Тип содержимого файла.

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

  • Тип: String

CamelFileLength (consumer)

Constant: FILE_LENGTH (opens in a new tab)

  • Размер файла.

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

  • Тип: long

CamelFileLastModified (consumer)

Constant: FILE_LAST_MODIFIED (opens in a new tab)

  • Тип: Размер файла.

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

  • Тип: Date

CamelFileName (producer)

Constant: FILE_NAME (opens in a new tab)

  • Имя файла.

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

  • Тип: String

Content-Type (producer)

Constant: CONTENT_TYPE (opens in a new tab)

  • Тип: Тип содержимого файла.

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

  • Тип: String

CamelFileNameProduced (producer)

Constant: FILE_NAME_PRODUCED (opens in a new tab)

  • Созданное имя файла.

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

  • Тип: String

gridfs.metadata (common)

Constant: GRIDFS_METADATA (opens in a new tab)

  • Тип: Любые дополнительные метаданные, хранящиеся вместе с файлом в формате JSON..

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

  • Тип: String

gridfs.operation (producer)

Constant: GRIDFS_OPERATION (opens in a new tab)

  • Операция, которую необходимо выполнить.

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

  • Тип: String

gridfs.chunksize (producer)

Constant: GRIDFS_CHUNKSIZE (opens in a new tab)

  • Тип: Количество байтов на фрагмент загруженного файла.

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

  • Тип: Integer

gridfs.fileid (producer)

Constant: GRIDFS_FILE_ID_PRODUCED (opens in a new tab)

  • ObjectId созданного файла.

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

  • Тип: ObjectId

gridfs.objectid (producer)

Constant: GRIDFS_OBJECT_ID (opens in a new tab)

  • Тип: ObjectId созданного файла.

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

  • Тип: ObjectId

Usage

GridFS operations - producer endpoint

count

Возвращает общее количество файлов в коллекции, возвращая целое число в качестве тела сообщения OUT.

// from("direct:count").to("mongodb-gridfs?database=tickets&operation=count");
Integer result = template.requestBodyAndHeader("direct:count", "irrelevantBody");
assertTrue("Result is not of type Long", result instanceof Integer);

Вы можете указать заголовок имени файла, чтобы получить количество файлов, соответствующих этому имени.

Map<String, Object> headers = new HashMap<String, Object>();
headers.put(Exchange.FILE_NAME, "filename.txt");
Integer count = template.requestBodyAndHeaders("direct:count", query, headers);

listAll

Возвращает Reader, который выводит список всех имен файлов и их идентификаторов в виде потока, разделенного табуляцией.

`// from("direct:listAll").to("mongodb-gridfs?database=tickets&operation=listAll"); Результат чтения = template.requestBodyAndHeader("direct:listAll", "irrelevantBody");

имя_файла1.txt 1252314321 имя_файла2.txt 2897651254`

findOne

Находит файл в системе GridFS и устанавливает тело запроса в поток ввода (InputStream) с его содержимым. Также предоставляет метаданные с заголовками. Использует Exchange.FILE_NAMEвходящие заголовки для определения искомого файла.

// from("direct:findOne").to("mongodb-gridfs?database=tickets&operation=findOne");
Map<String, Object> headers = new HashMap<String, Object>();
headers.put(Exchange.FILE_NAME, "filename.txt");
InputStream result = template.requestBodyAndHeaders("direct:findOne", "irrelevantBody", headers);

create

Создайте новый файл в базе данных GridFs. Он использует Exchange.FILE_NAMEвходящие заголовки для имени и содержимое тела файла (в виде потока ввода) в качестве контента.

// from("direct:create").to("mongodb-gridfs?database=tickets&operation=create");
Map<String, Object> headers = new HashMap<String, Object>();
headers.put(Exchange.FILE_NAME, "filename.txt");
InputStream stream = ... the data for the file ...
template.requestBodyAndHeaders("direct:create", stream, headers);

remove

Удаляет файл из базы данных GridFS.

// from("direct:remove").to("mongodb-gridfs?database=tickets&operation=remove");
Map<String, Object> headers = new HashMap<String, Object>();
headers.put(Exchange.FILE_NAME, "filename.txt");
template.requestBodyAndHeaders("direct:remove", "", headers);

Examples

Example route

Следующий маршрут, определенный в Spring XML, выполняет операцию findOne (opens in a new tab) для коллекции.

Get a file from GridFS

<route>
  <from uri="direct:start" />
  <!-- using bean 'mongoBean' defined above -->
  <to uri="mongodb-gridfs:mongoBean?database=${mongodb.database}&amp;operation=findOne" />
  <to uri="direct:result" />
</route>

Configuration of a database in Spring XML

Следующий код Spring XML создает компонент, определяющий соединение с экземпляром MongoDB.

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="mongoBean" class="com.mongodb.Mongo">
        <constructor-arg name="host" value="${mongodb.host}" />
        <constructor-arg name="port" value="${mongodb.port}" />
    </bean>
</beans>

Spring Boot Auto-Configuration

При использовании mongodb-gridfs с Spring Boot обязательно используйте следующую зависимость Maven для поддержки автоматической настройки:

<dependency>
  <groupId>org.apache.camel.springboot</groupId>
  <artifactId>camel-mongodb-gridfs-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>

Компонент поддерживает 4 опции, которые перечислены ниже.

camel.component.mongodb-gridfs.autowired-enabled

  • Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.

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

  • Тип: Boolean

camel.component.mongodb-gridfs.bridge-error-handler

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

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

  • Тип: Boolean

camel.component.mongodb-gridfs.enabled

  • Включить ли автоматическую настройку компонента mongodb-gridfs. По умолчанию эта опция включена.

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

  • Тип: Boolean

camel.component.mongodb-gridfs.lazy-start-producer

  • Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.

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

  • Тип: Boolean