我们有一个运行c# windows服务的应用程序服务器和一个运行TIBCO EMS的服务器。这两个服务器将在一周内的不同时间重新启动。
当应用程序服务器首先恢复联机时,我们会像c# windwos服务一样继续尝试连接到EMS服务器,直到EMS服务器恢复联机为止。(我已经将重试逻辑用于此场景)
当EMS服务器脱机而应用服务器正在运行时(例如,c#中的EMS客户端正在侦听队列中的传入消息),为此场景执行重试逻辑的最佳方式是什么?是否会立即抛出异常?
谢谢
发布于 2012-12-05 19:53:00
如何获取connecton close的通知?我看到有conneciton对象的Exception Listner和Exception Hanlder。但是如果我在它们都运行的时候关闭网卡,我就不能在c#中捕获它们中的任何一个。
它们之间有什么不同?
发布于 2012-12-05 19:05:50
如果您的Windows Service只打算连接到TIBCO EMS,那么您可以向它添加一个依赖项。然后,每当TIBCO EMS服务停止/重新启动时,您的Windows Service将分别停止/重新启动。缺点是当您启动TIBCO EMS时,您的Windows Service不会自动调用入门(我不确定您是否可以将两个服务配对在一起来解决此问题)。
或者,您可以将.NET中的一个计时器类(例如System.Timers.Timer)添加到您的类中,用于处理到TIBCO EMS的连接。然后在连接关闭时启动计时器,并在连接打开后停止计时器。计时器可以在指定的时间间隔后尝试连接。
发布于 2020-03-04 23:57:20
您应该尝试将以下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=35https://stackoverflow.com/questions/13714579
复制相似问题