从VB.Net应用程序中读取Tibco消息

时间:2013-10-24 19:16:37

标签: vb.net tibco tibco-ems

我是Tibco世界的新手......我被要求创建一个VB.net应用程序来做几件事:

  1. 更新数据库中列的值(然后在TIBCO EMS中生成消息)。

  2. 我的应用程序需要从TIBCO读取此消息并确定消息中是否包含特定字,并将结果显示为Pass或Fail

  3. 我已经编写了第一部分任务,但是,我不知道如何继续第二部分。我希望得到一些关于如何进行的帮助/指导!有什么建议吗?

    谢谢, NewTibcoUser

2 个答案:

答案 0 :(得分:1)

根据您拥有的Tibco Tools,可以轻松完成。如果您有BW和ADB(活动数据库适配器),那么您可以使用它。

选项1:


如果你没有adb,你可以通过做类似以下的事情来模仿它(亚行并不神奇,它的前沿相当不错)

1)创建正在监视更改的表的镜像(您可以只放入要监视的列加上密钥)             键             ColumnYouWantToMonitor             DeliveryStatus(Adb_L_DeliverStatus)             交易类型(adb_opCode)             时间它发生了(Adb_timestamp)             交货状态(ADB_L_DeliveryStatus) 2)在表上创建一个触发器,将记录插入表中。

3)编写一个.Net进程,每隔5秒或10或其他任何时间监视表(使其可配置)(从tableX中选择*,其中DeliveryStatus ='N'按orderTime顺序)

4)将消息放在EMS队列上或对您进行服务调用.Net App。


选项2

1)在表上创建一个触发器,并将事件写入SQL Server代理服务队列 2)编写一个从该SSBS队列读取并将其转换为EMS消息的.Net应用程序

一些设计考虑因素

  • 尽量不要不断查询(Aka民意调查)主表上的更改(防止阻止)
  • 如果您的应用未运行并且正在进行数据库更改,请确保您有一条消息过期时间。因此,当您的应用启动时,它不必处理队列中的1000条消息(具体取决于您是否需要消息)
  • 如果确实需要这些消息,您可能希望将队列设置为持久保存到磁盘,这样就不会丢失消息。您的.Net应用程序中的客户确认也不仅仅是自动确认。

答案 1 :(得分:0)

正如您所提到的,第一点已经完成(可能是ADB或自定义程序对数据库插入作出反应)。

因此,您的问题严格来说是“对来自VB.Net的EMS消息内容的反应”部分。

我看到两种可能性: 1-如果您有EMS,ADB和BW,请创建自定义适配器订户(BW配置)以某种方式更改数据库以响应总线上的消息。然后,您的VB应用程序可以简单地查询数据库以获取响应状态。

2-如果您没有TIBCO堆栈中的这么多产品,那么您应该制作一个简单的C#EMS客户端程序(请参阅EMS文档中提供的示例)。然后,这个客户端可以发信号通知VB应用程序(可能是某种.Net内部信号,我自己不是专家)或者在DB中写入响应状态。