【问题标题】:Tibco RV C client stops receiving messagesTibco RV C 客户端停止接收消息
【发布时间】:2018-01-29 17:05:42
【问题描述】:

我有一个 C 客户端正在监听 Tibco RV(使用 8.4.0)。源非常频繁地在 PREFIX1.* 和 PREFIX2.* 上输出消息(每秒可能多次)。

我有六个线程,每个线程都监听一个特定的 SUFFIX,例如 PREFIX1.SUFFIX_A 和 PREFIX2.SUFFIX_A。所以每个线程都有一个监听器和它自己的用于这两条消息的队列。我的队列大小限制为 1000,如果我们达到这个限制,则删除最旧的 200 个(但在繁忙时间队列中永远不会超过 40 个)。

运行好几个小时后,程序每天都突然停止接收数据。源继续发布,但我不再从任何队列分派事件。我不明白是什么原因造成的(除了删除侦听器)。

什么可能导致收听停止?或者,鉴于系统是高频的,如何对此进行调查?我可以通过 C 接口判断侦听器是否仍然处于活动状态?我在 API 中看不到任何内容。

感谢您的帮助, -戴夫

【问题讨论】:

  • 多线程程序中的间歇性、罕见错误几乎总是由竞争条件引起的。所以这就是你应该停止搜索的地方:检查多个线程之间共享的所有变量。
  • 线程之间的共享状态非常少。 tibrv dll 内部可能还有很多事情要做,但我当然对此一无所知。我想知道这是否可能是 RV 可能进入的已知状态。

标签: c tibco


【解决方案1】:

问题似乎在于该机器仅安装了部分 RV。特别是,我们为该机器提供的软件包中没有 rv 守护程序。在重新阅读文档后,我实际上有点困惑我们是如何设法获取网络数据的,但似乎没有守护进程我们可以实现联网,直到出现轻微的网络问题,然后什么都没有;使用我们从网络错误中恢复的守护进程。

因此,针对这种情况的解决方法就是安装完整的软件包并确保守护程序持续运行。现在问题似乎已经消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 2010-12-03
    • 2018-08-06
    • 2017-12-22
    • 1970-01-01
    • 2021-05-23
    相关资源
    最近更新 更多