我们有一台运行c#windows服务的应用服务器和一台运行TIBCO EMS的服务器。 两个服务器将在一周的不同时间重新启动。
当应用服务器首先恢复在线时,我们希望c#windwos服务继续尝试连接到EMS服务器,直到EMS服务器重新联机。 (我有重试逻辑适用于这种情况)
当EMS服务器在应用程序服务器运行时离线时(例如,c#中的EMS客户端正在侦听队列中的传入消息),对于这种情况,执行重试逻辑的最佳方法是什么?会立即抛出异常吗?
由于
答案 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