0

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

当应用程序服务器首先重新上线时,我们喜欢 c#windwos 服务不断尝试连接到 EMS 服务器,直到 EMS 服务器重新上线。(我有重试逻辑适用于这种情况)

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

谢谢

4

3 回答 3

1

如何获得连接关闭的通知?我看到连接对象有异常列表器和异常处理程序。但是如果我在它们都运行时关闭网卡,我无法在 c# 中捕获它们中的任何一个。

它们之间有什么区别?

于 2012-12-05T11:52:59.713 回答
0

如果您Windows Service只是为了连接,TIBCO EMS那么您可以添加一个依赖项。然后,每当TIBCO EMS服务停止/重新启动时,您Windows Service将分别停止/重新启动。缺点是当你开始时TIBCO EMS,你Windows Service不会自动开始(我不确定你是否可以将两个服务配对在一起来克服这个问题)。

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

于 2012-12-05T11:05:49.987 回答
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
于 2020-03-04T15:57:20.327 回答