Читайте сообщения Tibco из приложения VB.Net

Я новичок в мире Tibco... Меня попросили создать приложение VB.net, чтобы сделать несколько вещей:

  1. Обновите значение столбца в базе данных (который затем генерирует сообщение в TIBCO EMS).

  2. Моему приложению необходимо прочитать это сообщение из 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, я сам не эксперт) или записывать статус ответа в БД.

Другие вопросы по тегам