<< Click to Display Table of Contents >> Объектная модель > Базовое решение Directum RX > ExchangeCore – электронный обмен. Настройки > Очереди QueueItemBase – очередь электронного обмена |
Базовая прикладная очередь сообщений для асинхронных событий и периодических фоновых процессов. Наследник от Sungero.CoreEntities.DatabookEntry. Создается, обрабатывается и удаляется программно, недоступна в проводнике.
Тип очереди определяет ее контекст применения, очереди разных типов не пересекаются друг с другом. Очередь предназначена для хранения информации об обрабатываемом сообщении, как правило одному элементу очереди соответствует одна «единица обработки»: запрос на конвертацию содержимого документа, запрос на асинхронную выдачу прав, сообщение из сервиса.
Жизненный цикл элемента очереди начинается с создания:
•в фоновом процессе: элементы очереди как правило создаются для «дельты» между предыдущим запуском и текущим: новые сообщения, измененные документы;
•в событиях сохранения и действиях: чтобы сложная логика асинхронно выполнилась в рамках фонового процесса.
Далее другой код обрабатывает созданный элемент очереди, не обязательно синхронно. Обработка элемента очереди и его удаление после успешного выполнения логики объединяются в одну транзакцию, поэтому гарантируется, что элемент очереди либо будет успешно обработан и удален, либо останется для повторной обработки.
Имя свойства |
Отображаемое имя |
---|---|
ИД асинхронного обработчика |
|
Абонентский ящик |
|
ИД в сервисе обмена |
|
Дата изменения |
|
Имя |
|
Комментарий |
|
Статус обработки |
|
Количество повторов |
|
Головной ящик |
AsyncHandlerId (ИД асинхронного обработчика): Строка (250)
Идентификатор (GUID) асинхронного обработчика.
Используется в наследниках. Для MessageQueueItem (Элемент очереди синхронизации сообщений) заполняется в фоновом процессе «Электронный обмен. Получение сообщений» по схеме:
•для элементов очереди с одним RootMessageId (ИД основного сообщения в сервисе обмена) генерируется один общий новый GUID. В дальнейшем эти элементы отправятся на обработку в один асинхронный обработчик «Обработка сообщений из сервиса обмена»;
•GUID записывается в свойство AsyncHandlerId (ИД асинхронного обработчика) каждого элемента очереди;
•GUID передается в качестве параметра AsyncHandlerId в асинхронный обработчик.
Очищается при нажатии на действие Возобновить обработку записи справочника MessageQueueItem (Элемент очереди синхронизации сообщений).
Используется:
•в фоновом процессе «Электронный обмен. Получение сообщений» для отбора элементов очереди, для которых не запущен асинхронный обработчик «Обработка сообщений из сервиса обмена» (у них пустой AsyncHandlerId (ИД асинхронного обработчика)), и для последующей отправки их на обработку;
•в асинхронном обработчике «Обработка сообщений из сервиса обмена» для проверки на совпадение идентификатора асинхронного обработчика в свойстве AsyncHandlerId (ИД асинхронного обработчика) элемента очереди и в параметре AsyncHandlerId асинхронного обработчика. Если не совпадают, обработка элемента очереди пропускается;
•при логировании для возможности искать все строки в логе по одному асинхронному обработчику.
Для BodyConverterQueueItem (Элемент очереди конвертации тел документов) заполняется в фоновом процессе «Электронный обмен. Преобразование документов в PDF» по следующей схеме:
•для каждого элемента очереди генерируется новый GUID;
•этот GUID записывается в свойство AsyncHandlerId (ИД асинхронного обработчика элемента очереди;
•этот же GUID передается в качестве параметра AsyncHandlerId в асинхронный обработчик «Преобразование документов электронного обмена в PDF с отметкой об электронной подписи».
Используется:
•в фоновом процессе «Электронный обмен. Преобразование документов в PDF» для отбора элементов очереди, для которых не запущен асинхронный обработчик «Преобразование документов электронного обмена в PDF с отметкой об электронной подписи» (у них пустой AsyncHandlerId (ИД асинхронного обработчика)), и последующей отправки их на обработку;
•в асинхронном обработчике «Преобразование документов электронного обмена в PDF с отметкой об электронной подписи» для проверки на совпадение идентификатора асинхронного обработчика в свойстве AsyncHandlerId (ИД асинхронного обработчика) элемента очереди и в параметре AsyncHandlerId асинхронного обработчика. Если не совпадают – обработка элемента очереди пропускается;
•при логировании для возможности поиска всех строк в логе по одному асинхронному обработчику.
ExternalId (ИД в сервисе обмена): Строка(250)
Уникальный идентификатор связанного с элементом очереди сообщения или сущности во внешней системе. В контексте разных типов очередей идентификатор используется по-разному.
ProcessingStatus (Статус обработки): Перечисление
Статус обработки элемента очереди. Фоновые процессы по-разному обрабатывают элементы очереди с разными статусами.
Имя свойства |
Отображаемое имя |
---|---|
NotProcessed |
Не обработано |
Error |
Возникла ошибка |
TaskSendWaiting |
Ожидает отправки задачи |
LastUpdate (Дата изменения): Дата
Дата последнего обновления элемента очереди.
Retries (Количество повторов): Целое
Количество прошедших попыток обработки элемента очереди.
Box (Абонентский ящик): Sungero.ExchangeCore.BoxBase
Абонентский ящик СО, на который получено сообщение. Актуален только для очередей, связанных с электронным обменом в ЮЗДО.
RootBox (Головной ящик): Sungero.ExchangeCore.BusinessUnitBox
Абонентский ящик нашей организации, на который получено сообщение. Актуален только для очередей, связанных с электронным обменом в ЮЗДО.
Имя элемента очереди. Не используется.
Note (Комментарий): Строка(1000)
Комментарий.
© Компания Directum, 2024 |