Nitrite

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

Компонент Nitrite используется для доступа к базе данных Nitrite NoSQL. (opens in a new tab)

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

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

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

Компонент «Нитрит» поддерживает 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

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

nitrite:database

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

Path Parameters (1 parameters)

database (common)

  • Требуемый путь к файлу базы данных. Будет создан, если не существует..

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

  • Тип: String

Query Parameters (9 parameters)

collection (common)

  • Название коллекции нитритов. Не может использоваться в сочетании с опцией repositoryClass.

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

  • Тип: String

repositoryClass (common)

  • Тип: Класс Nitrite ObjectRepository. Не может использоваться в сочетании с опцией сбора.

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

  • Тип: Class

repositoryName (common)

  • Необязательное имя ObjectRepository. Может использоваться только в сочетании с repositoryClass, в противном случае не имеет эффекта.

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

  • Тип: String

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

lazyStartProducer (producer (advanced))

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

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

  • Тип: boolean

password (security)

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

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

  • Тип: String

username (security)

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

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

  • Тип: String

Message Headers

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

CamelNitriteChangeTimestamp (consumer)

Constant: CHANGE_TIMESTAMP (opens in a new tab)

  • Тип: Временная метка события в миллисекундах эпохи.

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

  • Тип: long

CamelNitriteChangeType (consumer)

Constant: CHANGE_TYPE (opens in a new tab)

  • Тип мероприятия.

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

    • INSERT

    • UPDATE

    • REMOVE

    • DROP

    • CLOSE

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

  • Тип: ChangeType

CamelNitriteOperation (producer)

Constant: OPERATION (opens in a new tab)

  • Тип: Операция, вызываемая в коллекции или репозитории. Если не указано иное, по умолчанию используется UpsertOperation.

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

  • Тип: AbstractNitriteOperation

CamelNitriteWriteResult (common)

Constant: WRITE_RESULT (opens in a new tab)

  • Результат операции по изменению данных.

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

  • Тип: WriteResult

Usage

Producer operations

Следующие операции доступны для указания NitriteConstants.OPERATIONпри производстве нитрита..

FindCollectionOperation

  • Тип: collection

  • По умолчанию: Filter(optional), FindOptions(optional)

  • Тип: Найти документы в коллекции по фильтру. Если фильтр не указан, возвращает все документы.

RemoveCollectionOperation

  • collection

  • По умолчанию: Filter(required), RemoveOptions(optional)

  • Тип: Удалить документы, соответствующие фильтру

UpdateCollectionOperation

  • collection

  • По умолчанию: Filter(required), UpdateOptions(optional), Document(optional)

  • Тип: Обновить документы, соответствующие фильтру. Если документ не указан, используется тело сообщения.

CreateIndexOperation

  • common

  • По умолчанию: field:String(required), IndexOptions(required)

  • Тип: Создать индекс с IndexOptions для поля

DropIndexOperation

  • common

  • По умолчанию: field:String(required)

  • Тип: Перетащите индекс на поле

ExportDatabaseOperation

  • common

  • По умолчанию: ExportOptions(optional)

  • Тип: Экспортируйте всю базу данных в JSON и сохраните результат в теле файла. Подробнее о формате см. в документации Nitrite.

GetAttributesOperation

  • common

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

  • Тип: Получить атрибуты коллекции

GetByIdOperation

  • common

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

  • Тип: Получить документ по _id

ImportDatabaseOperation

  • common

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

  • Тип: Импортируйте полную базу данных из JSON в тело

InsertOperation

  • common

  • По умолчанию: payload(optional)

  • Тип: Вставить документ в коллекцию или объект в ObjectRepository. Если параметр не указан, вставляется тело сообщения.

ListIndicesOperation

  • common

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

  • Тип: Список индексов в коллекции и хранилищах List<Index>в теле сообщения

RebuildIndexOperation

  • common

  • По умолчанию: field (required), async (optional)

  • Тип: Перестроить существующий индекс по полю

UpdateOperation

  • common

  • По умолчанию: payload(optional)

  • Тип: Обновить документ в коллекции или объект в ObjectRepository. Если параметр не указан, обновляет документ из тела сообщения.

UpsertOperation

  • common

  • По умолчанию: payload(optional)

  • Тип: Вставка или обновление документа в коллекцию или объекта в ObjectRepository. Если параметр не указан, обновляет документ из тела сообщения.

FindRepositoryOperation

  • repository

  • По умолчанию: ObjectFilter(optional), FindOptions(optional)

  • Тип: Поиск объектов в ObjectRepository по ObjectFilter. Если не указано, возвращает все объекты в репозитории.

RemoveRepositoryOperation

  • repository

  • По умолчанию: ObjectFilter(required), RemoveOptions(optional)

  • Тип: Удалить объекты в ObjectRepository, соответствующие ObjectFilter

UpdateRepositoryOperation

  • repository

  • По умолчанию: ObjectFilter(required), UpdateOptions(optional), payload(optional)

  • Тип: Обновить объекты, соответствующие ObjectFilter. Если полезная нагрузка не указана, используется тело сообщения.

Examples

Consume changes in a collection.

from("nitrite:/path/to/database.db?collection=myCollection")
    .to("log:change");

Consume changes in object repository.

from("nitrite:/path/to/database.db?repositoryClass=my.project.MyPersistentObject")
    .to("log:change");
package my.project;

@Indices({
        @Index(value = "key1", type = IndexType.NonUnique)
})
public class MyPersistentObject {
    @Id
    private long id;
    private String key1;
    // Getters, setters
}

Insert or update document

from("direct:upsert")
    .setBody(constant(Document.createDocument("key1", "val1")))
    .to("nitrite:/path/to/database.db?collection=myCollection");

Get Document by id

from("direct:getByID")
    .setHeader(NitriteConstants.OPERATION, () -> new GetByIdOperation(NitriteId.createId(123L)))
    .to("nitrite:/path/to/database.db?collection=myCollection")
    .to("log:result")

Find Document in collection

from("direct:getByID")
    .setHeader(NitriteConstants.OPERATION, () -> new FindCollectionOperation(Filters.eq("myKey", "withValue")))
    .to("nitrite:/path/to/database.db?collection=myCollection")
    .to("log:result");

Spring Boot Auto-Configuration

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

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

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

camel.component.nitrite.autowired-enabled

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

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

  • Тип: Boolean

camel.component.nitrite.bridge-error-handler

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

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

  • Тип: Boolean

camel.component.nitrite.enabled

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

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

  • Тип: Boolean

camel.component.nitrite.lazy-start-producer

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

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

  • Тип: Boolean