Для интеграции с внешними сервисами можно использовать бизнес-хуки – сообщения, добавляемые в очередь Oracle при определенных событиях, которые потом можно задействовать в сторонних приложениях.
Очередь работает в многопотребительском режиме: сообщение доступно нескольким подписчикам. Сообщение остается в очереди, пока его не прочитают все подписчики, подтвердив получение.
Рекомендуется забирать сообщения во внешний сервис не напрямую из очереди Oracle, а с использованием брокеров сообщений, таких как ActiveMQ. Такой подход позволит:
Для базовой настройки передачи сообщений необходимо в конфигурационный файл брокера добавить правило маршрутизации:
<route>
<from uri="oracleTopic:topic:AIS_NET.HYDRA_MESSAGES?clientId=ActiveMQ&durableSubscriptionName=HP"/>
<to uri="activemq:queue:hydra_messages"/>
</route> |
Если ActiveMQ работает не под AIS_NET, может потребоваться выдать права на очередь
После этого ActiveMQ будет забирать сообщения из Oracle и помещать в очередь hydra_messages. |
ActiveMQ следует подключаться к HYDRA_MESSAGES под пользователем AIS_3P_SERVICES, а не AIS_PROVISIONING, как было раньше. Для этого пользователя явно выдано право на DEQUEUE из этой очереди. |
Другие примеры настройки маршрутизации сообщений доступны в статье Примеры особых конфигураций ActiveMQ |
В версиях 6.0.0.172 и 6.2.0.69 была добавлена возможность отключить отправку бизнес-хуков. Соответствующий чекбокс появился в системных параметрах в ООС.
Бизнес-хуки передаются в формате XML и состоят из элементов:
payload - подробности события, состав зависит от типа сообщения:
| Код типа сообщения | Событие | Состав сообщения | |
|---|---|---|---|
| Элемент | Описание | ||
| MESSAGE_TYPE_Payment | Актуализация платёжного поручения или проведение платежа | document_id | Идентификатор платежного поручения |
| account_id | Идентификатор лицевого счета, на который зачислен платеж | ||
| MESSAGE_TYPE_Charge | Информация о начислении | charge_log_id | Идентификатор акта начислений |
| charge_log_line_id | Идентификатор строки акта начислений | ||
| change_balance_type_id | Идентификатор значения из базового справочника "Тип изменения баланса" (REF_TYPE_ChangeBalanceType) | ||
| MESSAGE_TYPE_CreditLimit | Изменение суммы кредитного лимита | document_id | Документ-основание |
| account_id | Идентификатор лицевого счета | ||
| MESSAGE_TYPE_Correction | Проведение корректировок | account_id | Идентификатор лицевого счета |
| charge_log_id | Идентификатор акта начислений по корректировке | ||
| MESSAGE_TYPE_StopSrvProv | Прекращение оказания услуг | charge_log_id | Идентификатор акта начислений |
| MESSAGE_TYPE_ArchiveDoc | Архивирование документа | charge_log_id | Идентификатор акта начислений |
| MESSAGE_TYPE_AutoTopUp | Подписка на автоплатеж | account_id | Идентификатор лицевого счета |
| auto_top_up_id | Идентификатор подписки | ||
| auto_top_up_state_id | Состояние автоплатежа | ||
| MESSAGE_TYPE_SubjValue | Изменение значения дополнительного параметра субъекта | subject_id | Идентификатор субъекта |
| subject_type_id | Тип субъекта | ||
| additional_value_type_id | Тип доп. параметра | ||
| additional_value_id | Идентификатор доп. параметра | ||
| additional_value | Значение доп. параметра | ||
| MESSAGE_TYPE_AutoTopUpPayment | Результат проведения автоплатежа. Добавлено в 6.2.0.28 | account_id | Идентификатор лицевого счета |
| request_state_id | Статус проведения автоплатежа | ||
| refuse_reason_Id | Причина неуспешного проведения автоплатежа. Необязательное поле. | ||
MESSAGE_TYPE_ChangeDocState | Изменение состояния документа (6.2.0.39) | document_id | Идентификатор документа |
| document_type_id | Тип документа | ||
| new_state_id | Новое состояние документа | ||
| old_state_id | Старое состояние документа | ||
<message>
<message_type_id>1208</message_type_id>
<message_type_code>MESSAGE_TYPE_Payment</message_type_code>
<version/>
<created_at>2022-01-28T12:12:00</created_at>
<payload>
<payment>
<document_id>12811629901</document_id>
<account_id>178500901</account_id>
</payment>
</payload>
</message> |
<message>
<message_type_id>2208</message_type_id>
<message_type_code>MESSAGE_TYPE_Charge</message_type_code>
<version/>
<created_at>2022-07-14T00:08:43</created_at>
<payload>
<charge>
<charge_log_id>289145601</charge_log_id>
<charge_log_line_id>409855401</charge_log_line_id>
<change_balance_type_id>3210</change_balance_type_id>
</charge>
</payload>
</message> |
<message>
<message_type_id>3208</message_type_id>
<message_type_code>MESSAGE_TYPE_CreditLimit</message_type_code>
<version/>
<created_at>2022-07-14T00:25:48</created_at>
<payload>
<credit_limit>
<document_id>411763901</document_id>
<account_id>133193991</account_id>
</credit_limit>
</payload>
</message> |
<message>
<message_type_id>4208</message_type_id>
<message_type_code>MESSAGE_TYPE_Correction</message_type_code>
<version/>
<created_at>2022-07-13T00:14:30</created_at>
<payload>
<correction>
<charge_log_id>321755501</charge_log_id>
<account_id>21121191</account_id>
</correction>
</payload>
</message> |
<message>
<message_type_id>5208</message_type_id>
<message_type_code>MESSAGE_TYPE_StopSrvProv</message_type_code>
<version/>
<created_at>2022-06-22T12:05:25</created_at>
<payload>
<stop_service_provisioning>
<charge_log_id>199968101</charge_log_id>
</stop_service_provisioning>
</payload>
</message> |
<message>
<message_type_id>6208</message_type_id>
<message_type_code>MESSAGE_TYPE_ArchiveDoc</message_type_code>
<version/>
<created_at>2022-05-22T11:05:25</created_at>
<payload>
<archive_document>
<charge_log_id>188983101</charge_log_id>
</archive_document>
</payload>
</message> |
<message>
<message_type_id>7208</message_type_id>
<message_type_code>MESSAGE_TYPE_AutoTopUp</message_type_code>
<version/>
<created_at>2022-04-22T13:23:21</created_at>
<payload>
<auto_top_up>
<account_id>188983101</account_id>
<auto_top_up_id>7581101</auto_top_up_id>
<auto_top_up_state_id>2195</auto_top_up_state_id>
</auto_top_up>
</payload>
</message> |
<message>
<message_type_id>8208</message_type_id>
<message_type_code>MESSAGE_TYPE_SubjValue</message_type_code>
<version/>
<created_at>2022-07-11T08:11:36</created_at>
<payload>
<subject_value>
<subject_id>397259401</subject_id>
<subject_type_id>18001</subject_type_id>
<additional_value_type_id>18101</additional_value_type_id>
<additional_value_id>397259501</additional_value_id>
<additional_value/>
</subject_value>
</payload>
</message> |
<message>
<message_type_id>13208</message_type_id>
<message_type_code>MESSAGE_TYPE_AutoTopUpPayment</message_type_code>
<version/>
<created_at>2022-04-22T13:23:21</created_at>
<payload>
<atu_payment>
<account_id>188983101</account_id>
<request_state_id>3197</request_state_id>
<refuse_reason_id>51198</refuse_reason_id>
</atu_payment>
</payload>
</message> |
<message>
<message_type_id>14208</message_type_id>
<message_type_code>MESSAGE_TYPE_ChangeDocState</message_type_code>
<version/>
<created_at>2024-04-26T15:19:31</created_at>
<payload>
<change_doc_state>
<document_id>188983101</document_id>
<document_type_id>7002</document_type_id>
<new_state_id>4003</new_state_id>
<old_state_id>3003</old_state_id>
</change_doc_state>
</payload>
</message> |