使用Tibco Rendezvous,如何捕获正在打印到控制台的错误?

时间:2014-06-25 17:17:00

标签: tibco-rv

在Tibco中,有时警告会打印到控制台,例如:

  

2014-06-25 18:13:22 RV:进程未处理TIB / Rendezvous错误:   {ADV_CLASS =“WARN”ADV_SOURCE =“RVCM”   ADV_NAME = “REGISTRATION.NOT_CERTIFIED.cm.test.subject”   subject =“cm.test.subject”sender =“cm.sender.cmname”}

我正在使用Tibco的.NET包装器。似乎这些错误实际上并没有进入.NET,并且它们无法通过try / catch捕获,因此可以正确处理它们。

有没有办法在.NET中处理这个错误?也许是一些注册处理程序来处理这样的错误的方法?或者,是否存在将这些警告重定向到除控制台之外的接收器的方法,例如,一个日志文件?

1 个答案:

答案 0 :(得分:0)

解决方案是添加“catch all”处理程序。

我正在听的当前主题是:

private readonly string _subjectDeliveryConfirm = "_RV.INFO.RVCM.DELIVERY.CONFIRM.>";

要添加catch all,请在以下位置添加另一个侦听器:

private readonly string _subjectDeliveryGlobal = ">";

当你添加一个新的监听器时,记得每个监听器使用一个单独的Listener具体类,否则Tibco会在第一条消息后神秘地停止工作(参见演示代码,了解如何创建多个监听器)。

_confirmListener1 = new Listener(Queue.Default, _netTransport, _subjectDeliveryConfirm, null);
_confirmListener1.MessageReceived += new MessageReceivedEventHandler(OnCertifiedMessageConfirmed);

// Subscribe to error messages, in particular error messages related to remote listener processes
// disappearing.
_confirmListener2 = new Listener(Queue.Default, _netTransport, _subjectDeliveryGlobal, null);
_confirmListener2.MessageReceived += new MessageReceivedEventHandler(OnTibcoCatchAll);

Tibco安装的\src\目录中有大量示例C#代码,用于说明上述技术。