Spring RabbitMQ
Общее описание
Блок Spring RabbitMQ обеспечивает отправку и получение сообщений через очереди RabbitMQ в рамках потоков Bercut ESB с использованием клиента Spring RabbitMQ. Позволяет интегрировать ESB с сервисами, работающими через RabbitMQ, и организовывать асинхронный обмен данными.
Блок Spring RabbitMQ может использоваться в качестве:
-
блока-отправителя
-
блока-получателя.
Настройка блока
В данном разделе описаны параметры блока Spring RabbitMQ, которые необходимо заполнить при его настройке.
Базовые параметры
| Название в UI | Название атрибута | Описание | Значение по умолчанию | Тип данных |
|---|---|---|---|---|
| Dynamic Endpoint | dynamicEndpoint | Доступен только для блоков-отправителей Параметр позволяет включить встроенную функциональность динамического определения вызываемой конечной точки. При включении параметра структура блока меняется таким образом, что в коде вместо определения to проставляется toD, а значение самого вызываемого ресурса может собираться из переменной, например ${header.foo}. | True | Логическое значение |
| Connection | connection | Обязательный параметр Этот параметр позволяет выбрать предсозданное подключение или создать новое с помощью визарда Connection Manager. | Список | |
| Description | description | Краткое описание блока. | Строка | |
| Exchange Name | exchangeName | Обязательный параметр Определяет имя exchange в системе обмена сообщениями (например, RabbitMQ). Для блоков отправителей: задает exchange, в который будут отправлены сформированные сообщения. Для блоков получателей: определяет exchange, к которому будет привязана очередь (queue) для получения сообщений. Важное примечание: для использования default exchange необходимо явно указать значение default — нельзя оставлять поле пустым. | Строка | |
| Dead Letter Exchange | deadLetterExchange | Задает имя exchange в системе обмена сообщениями для перенаправления проблемных сообщений (dead letter exchange). Используется для изоляции ошибок с целью последующего анализа. | Строка | |
| Dead Letter Exchange Type | deadLetterExchangeType | Определяет тип exchange для перенаправления проблемных сообщений в системе обмена сообщениями, интегрированной с Bercut ESB. Тип exchange задает правила маршрутизации таких сообщений в очередь dead letters. Возможные значения:
| Direct | Список |
| Dead Letter Queue | deadLetterQueue | Задает имя очереди недоставленных сообщений (dead letter queue, DLQ), куда перенаправляются сообщения, которые не удалось обработать в штатном режиме. Используется получателем (consumer) при возникновении ошибок. | Строка | |
| Dead Letter Routing Key | deadLetterRoutingKey | Параметр, который определяет ключ маршрутизации, используемый при перенаправлении сообщений в очередь недоставленных сообщений. Он позволяет контролировать, с каким ключом сообщения будут маршрутизироваться в специальную очередь после возникновения ошибки обработки | Строка | |
| Disable Reply To | disableReplyTo | Управляет созданием заголовка ReplyTo в исходящем сообщении. Если установлено значение True, компонент отключает автоматическое формирование заголовка Reply‑To, который обычно указывает адрес для ответа (например, очередь или endpoint). Это предотвращает неявную обратную связь и позволяет явно контролировать маршрутизацию ответов. Если False, заголовок Reply‑To формируется автоматически на основе контекста потока (например, копируется из входящего сообщения или задается по умолчанию). | False | Логическое значение |
| Queues | queues | Список очередей, к которым компонент будет подключаться для отправки или получения сообщений. Может содержать одну или несколько очередей, разделенные запятой. Если ни одна очередь не настроена, сгенерируется уникальный идентификатор в качестве имени очереди. | Список строк | |
| Routing Key | routingKey | Ключ маршрутизации, используемый при публикации сообщений в exchange. Определяет, в какую очередь (или какие очереди) попадет сообщение на основе правил привязки (bindings). Критически важен для моделей маршрутизации direct, topic. | Строка | |
| Test Connection On Startup | testConnectionOnStartup | Если True, компонент проверяет доступность сервера (RabbitMQ) при запуске потока. Гарантирует, что соединение установлено до начала обработки сообщений. При ошибке — поток не стартует. | False | Логическое значение |
| Acknowledge Mode | acknowledgeMode | Доступен только для блоков-получателей Флаг, управляющий поведением контейнера в отношении подтверждения сообщений. Возможные значения:
| Список | |
| Async Consumer | asyncConsumer | Доступен только для блоков-получателей Определяет, будет ли получатель обрабатывать Exchange асинхронно. Если включено, получатель может забрать следующее сообщение из очереди, пока предыдущее обрабатывается асинхронно (с помощью Asynchronous Routing Engine). В этом случае сообщения могут обрабатываться не строго по порядку. Если отключено (по умолчанию), Exchange полностью обрабатывается до того, как получатель заберёт следующее сообщение. | false | Логическое значение |
| Auto Declare | autoDeclare | Доступен только для блоков-получателей Определяет, должен ли получатель автоматически объявлять привязку (binding) между exchange, очередью и ключом маршрутизации при запуске. | True | Логическое значение |
| Auto Startup | autoStartup | Доступен только для блоков-получателей Определяет, должен ли контейнер получателя автоматически запускаться. | True | Логическое значение |
| Exchange Type | exchangeType | Доступен только для блоков-получателей Тип exchange. Допустимые значения: direct, fanout, headers, topic. | direct | Строка |
| No Local | noLocal | Доступен только для блоков-получателей Если установлено значение true, включается режим no-local — получатель не будет получать сообщения, опубликованные им самим. | False | Логическое значение |
| Exclusive | exclusive | Доступен только для блоков-получателей Если установлено значение true, получатель становится эксклюзивным (только он может потреблять из этой очереди). | False | Логическое значение |
| Maximum Retry Attempts | maximumRetryAttempts | Только для блоков‑получателей Количество попыток, которое получатель RabbitMQ предпримет для повторной обработки сообщения и которое не обработалось. | 5 | Целое число |
| Reject And Don’t Requeue | rejectAndDontRequeue | Только для блоков‑получателей Определяет, должен ли получатель RabbitMQ отклонить сообщение без его повторной постановки в очередь. При включении этой опции неудачные сообщения могут быть отправлены в Dead Letter Exchange/Queue — если такая настройка выполнена на брокере. | true | Логическое значение |
| Retry Delay | retryDelay | Доступен только для блоков-получателей Задержка (в миллисекундах), которую получатель RabbitMQ будет ожидать перед повторной доставкой сообщения, которое не обработалось. | 1000 | Целое число |
| Allow Null Body | allowNullBody | Доступен только для блоков-отправителей Разрешает обработку сообщений с пустым телом (null/пустая строка). Если False, сообщение с пустым payload будет отклонено или вызовет ошибку. Полезно для сигнальных сообщений или heartbeat‑механизмов. | False | Логическое значение |
| Auto Declare Producer | autoDeclareProducer | Доступен только для блоков-отправителей Определяет, должен ли отправитель автоматически объявлять при запуске привязку между обменом (exchange), очередью (queue) и ключом маршрутизации (routing key). | False | Логическое значение |
| Confirm | confirm | Доступен только для блоков-отправителей Управляет режимом ожидания подтверждения доставки сообщений для отправителя. Возможные значения:
| Auto | Список |
| Confirm Timeout | confirmTimeout | Доступен только для блоков-отправителей Таймаут (в мс) ожидания подтверждения доставки при включенном Confirm. Если подтверждение не получено за это время, считается, что отправка не удалась. | 5000 (5 с) | Целое число |
| Reply Timeout | replyTimeout | Доступен только для блоков-отправителей Таймаут (в мс) ожидания ответа при использовании паттерна inOut. Если ответ не получен за указанное время, генерируется ошибка таймаута. При использовании отрицательного значения - таймаут считается бесконечным. | 30000 (30 с) | Целое число |
| Skip Bind Queue | skipBindQueue | Доступен только для блоков-отправителей Если True, пропускает операцию привязки очереди (queue bind) к exchange. Используется, если привязка уже настроена вручную или через другой механизм. | False | Логическое значение |
| Skip Declare Exchange | skipDeclareExchang | Доступен только для блоков-отправителей Если True, пропускает объявление exchange на сервере. Предполагает, что exchange уже существует. | False | Логическое значение |
| Skip Declare Queue | skipDeclareQueue | Доступен только для блоков-отправителей Если True, пропускает объявление очереди на сервере. Предполагает, что очередь уже создана. Полезно для подключения к существующим очередям. | False | Логическое значение |
| Use Publisher Connection | usePublisherConnection | Доступен только для блоков-отправителей Определяет, использовать ли отдельное соединение для отправителей (publishers) и получателей (consumers). Возможные значения:
| False | Логическое значение |
Расширенные параметры
| Название в UI | Название атрибута | Описание | Значение по умолчанию | Тип данных |
|---|---|---|---|---|
| Lazy Start Producer | lazyStartProducer | Доступен только для блоков-отправителей Определяет, будет ли отправитель запускаться только при обработке первого сообщения, а не при старте потока. Если установлено значение True, запуск отправителя откладывается до момента получения первого сообщения. | False | Логическое значение |
| Bridge Error Handler | bridgeErrorHandler | Доступен только для блоков-получателей Определяет стратегию обработки ошибок на уровне интеграционного моста (bridge) в Bercut ESB. Отвечает за реакцию системы на сбои при передаче сообщений между компонентами. Может включать повторные попытки отправки, перенаправление в очередь ошибок, логирование и т. д. Функция доступна только для тех сторонних компонентов, которые позволяют системе получать уведомления о возникших исключениях. Некоторые компоненты обрабатывают ошибки внутри себя — в таких случаях использование bridgeErrorHandler невозможно. | False | Логическое значение |
| Concurrent Consumers | concurrentConsumers | Доступен только для блоков-получателей Указывает количество одновременных получателей по умолчанию при использовании JMS (не для запроса/ответа через JMS). Также для управления динамическим увеличением/уменьшением масштабирования потоков используется параметр Max Messages Per Task. При выполнении запроса/ответа через JMS для управления количеством одновременных получателей в листенере ответных сообщений используется опция Reply To Concurrent Consumers. | Целое число | |
| Exception Handler | exceptionHandler | Доступен только для блоков-получателей Определяет стратегию обработки исключений на уровне компонента. По умолчанию используется стандартный обработчик org.apache.camel.spi.ExceptionHandler, который логирует ошибки на уровнях WARN или ERROR и игнорирует их. Позволяет настроить кастомную логику обработки (повторные попытки, перенаправление в очередь ошибок и т. д.). | Строка | |
| Exchange Pattern | exchangePattern | Доступен только для блоков-получателей Задает шаблон взаимодействия между компонентами в интеграционном потоке. Определяет способ передачи сообщений и ожидания ответа. Возможные значения:
| Список | |
| Max Concurrent Consumers | maxConcurrentConsumers | Доступен только для блоков-получателей Указывает максимальное количество одновременных получателей при использовании JMS (не для запроса/ответа через JMS). Также для управления динамическим увеличением/уменьшением масштабирования потоков используется параметр Max Messages Per Task. При выполнении запроса/ответа через JMS для управления количеством одновременных получателей в листенере ответных сообщений используется опция Reply To Max Concurrent Consumers. | Целое число | |
| Message Listener Container Type | messageListenerContainerType | Доступен только для блоков-получателей Тип MessageListenerContainer. Возможные значения:
| DMLC | Строка |
| Prefetch Count | prefetchCount | Доступен только для блоков-получателей Указывает брокеру, сколько сообщений отправлять каждому получателю в одном запросе. Обычно это значение можно существенно увеличить для повышения пропускной способности. | Целое число | |
| Retry | retry | Доступен только для блоков-получателей Пользовательская конфигурация повторных попыток. Если параметр настроен, другие настройки повторных попыток (например, maximumRetryAttempts) не используются. | Строка | |
| Args | args | Позволяет задать аргументы конфигурации для различных концепций RabbitMQ. Аргументы передаются в формате «префикс.ключ=значение». Возможные значения:
queue.x-message-ttl=60000 задает время жизни сообщений в очереди (TTL) — 60 000 мс (60 секунд). | Строка | |
| Message Converter | messageConverter | Определяет класс‑конвертер, отвечающий за преобразование байтового представления сообщения в объектную модель (и обратно) на границах ESB (при приеме/отсылке). Отвечает за:
| Строка | |
| Message Properties Converter | messagePropertiesConverter | Определяет конвертер для преобразования свойств сообщения между внешним представлением и внутренней моделью Bercut ESB. Возможные значения для преобразования:
DefaultMessagePropertiesConverter — стандартный конвертер, поддерживающий базовые типы. | Строка | |
| Synchronous | synchronous | Определяет режим обработки сообщения:
| False | Логическое значение |
| Pattern | pattern | Доступен только для блоков-отправителей Шаблон взаимодействия (Exchange Pattern) для обмена сообщениями. Определяет направление потока данных между его компонентами. Возможные значения:
| Список | |
| Disabled | disabled | Доступен только для блоков-отправителей Определяет, будет ли блок отключен в потоке. В активированном потоке функциональность блока не будет отрабатываться. | False | Логическое значение |