Читайте сообщения Tibco из приложения VB.Net
Я новичок в мире Tibco... Меня попросили создать приложение VB.net, чтобы сделать несколько вещей:
Обновите значение столбца в базе данных (который затем генерирует сообщение в TIBCO EMS).
Моему приложению необходимо прочитать это сообщение из TIBCO и определить, есть ли в сообщении конкретное слово, и отобразить результат как "Пройдено" или "Неудачно".
Я уже написал первую часть задачи, однако, я понятия не имею, как перейти ко второй. Я надеюсь получить некоторую помощь / руководство о том, как действовать! Какие-либо предложения?
Спасибо, NewTibcoUser
2 ответа
Это можно легко сделать в зависимости от того, какими инструментами Tibco вы владеете. Если у вас есть BW и ADB (Active Database Adapter), вы можете использовать это.
Опция 1:
Если у вас нет adb, вы можете имитировать его, выполняя что-то вроде следующего (ADB не волшебен, это довольно прямолинейно)
1) Создайте зеркало таблицы, которая отслеживается на предмет изменений (вы можете просто добавить столбец, который хотите отслеживать, и ключ). Key ColumnYouWantToMonitor DeliveryStatus (Adb_L_DeliverStatus) Тип транзакции (adb_opCode) Время, когда это произошло (Adb_timestamp) Статус доставки (ADB_L_DeliveryStatus) 2) Создать триггер для таблицы, который вставит запись в таблицу.
3) Напишите.Net-процесс, который контролирует таблицу каждые 5 секунд или 10 или что-то еще (сделайте его настраиваемым) (выберите * из таблицы X, где DeliveryStatus = 'N' порядок по транзакции в)
4) Поместите сообщение в очередь EMS или позвоните в службу поддержки.Net App.
Вариант 2
1) Создайте триггер на таблице и запишите событие в очередь брокерской службы SQL Server. 2) Напишите приложение.Net, которое считывает эту очередь SSBS и преобразует ее в сообщение EMS.
некоторые конструктивные соображения
- Старайтесь не постоянно запрашивать (Aka poll) изменения в основной таблице (не допускать блокировку)
- Если ваше приложение не запущено и изменения в БД происходят, убедитесь, что у вас есть время истечения срока действия сообщения. Поэтому, когда ваше приложение запускается, оно не должно обрабатывать тысячи сообщений вне очереди (в зависимости от того, нужно вам сообщение или нет)
Если вам нужны сообщения, вы можете настроить очередь на постоянство на диске, чтобы не терять сообщения. Также подтверждение клиента в вашем.Net приложении было бы хорошей идеей, а не просто автоматическим подтверждением.
Как вы упоминаете, первый пункт уже сделан (возможно, с помощью ADB или пользовательской программы, реагирующей на вставку в БД).
Таким образом, ваша проблема заключается только в части "Реагировать на содержание сообщения EMS от VB.Net".
Я вижу две возможности: 1- Если у вас есть EMS, ADB и BW, создайте пользовательский подписчик Adapter (конфигурация BW), чтобы каким-то образом изменить DB в ответ на сообщения на шине. Ваше приложение VB может затем просто запросить DB, чтобы получить статус ответа.
2- Если у вас не так много продуктов из стека TIBCO, вам следует создать простую клиентскую программу C# EMS (см. Примеры, приведенные в документации EMS). Этот клиент может затем сигнализировать вам VB-приложение (возможно, какая-то внутренняя сигнализация.Net, я сам не эксперт) или записывать статус ответа в БД.