TIBCO EMS重试逻辑

时间:2012-12-05 00:49:09

标签: c# tibco tibco-ems ems

我们有一台运行c#windows服务的应用服务器和一台运行TIBCO EMS的服务器。 两个服务器将在一周的不同时间重新启动。

当应用服务器首先恢复在线时,我们希望c#windwos服务继续尝试连接到EMS服务器,直到EMS服务器重新联机。 (我有重试逻辑适用于这种情况)

当EMS服务器在应用程序服务器运行时离线时(例如,c#中的EMS客户端正在侦听队列中的传入消息),对于这种情况,执行重试逻辑的最佳方法是什么?会立即抛出异常吗?

由于

3 个答案:

答案 0 :(得分:1)

如何获取connecton的通知关闭? 我看到有连接对象的Exception Listner和Exception Hanlder。但是如果我在两个网卡都运行时关闭网卡,我就无法在c#中捕获它们。

它们之间有什么区别?

答案 1 :(得分:0)

如果您的Windows Service仅用于连接TIBCO EMS,那么您可以为其添加依赖关系。然后,只要TIBCO EMS服务停止/重新启动,您的Windows Service将分别停止/重新启动。缺点是,当您启动TIBCO EMS时,您的Windows Service将无法自动启动(我不确定您是否可以将两个服务配对以解决此问题)。

否则,您可以将.NET中的一个计时器类(例如System.Timers.Timer)添加到与您的TIBCO EMS连接的类中。然后在连接关闭时启动计时器,并在打开连接后将其停止。计时器可以在指定的时间间隔后尝试连接。

答案 2 :(得分:0)

您应该尝试将下面KB中的属性添加到tibemsd.conf中并进行检查。

https://support.tibco.com/s/article/Tibco-KnowledgeArticle-Article-33918

例如:

client_heartbeat_server=10
client_timeout_server_connection=35
server_heartbeat_client=10
server_timeout_client_connection=35