在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中处理这个错误?也许是一些注册处理程序来处理这样的错误的方法?或者,是否存在将这些警告重定向到除控制台之外的接收器的方法,例如,一个日志文件?
答案 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#代码,用于说明上述技术。