在TIBCO EMS和.NET API附近工作的预取(Working around pre-fetc

2019-09-27 17:16发布

所有TIBCO EMS 5的情况下*和.NET API

我一直沿着消息处理的现有模式,即在一个循环的工作:

  • 连接创建/打开
  • 创建会话/开放
  • 创建消息消费者
  • 接收方法被调用

如果消息!= null,则我们的消费它并提交或回滚事务(在底层会话)。 系统拉进该模型每隔x秒。

我创建了一个连接工厂确保了只有新会话创建(如果以前的会话仍在使用)。 这样一来系统的工作原理相同的连接上。

不过,我碰到的问题与预取每个接收呼叫(通过.NET接口)返回一个消息,并把几个(预取-1)到本地队列。 所以,我真的应该重复使用相同的会话下一次为了读那些已经退出的消息。 我已经把在包装,只要有那么点(接收不会返回null)重用会话和消息消费者。 这种做法样的作品,但似乎我可能会得到接收空,尽管仍有一些地方获取。 它也似乎只要我在同一个连接获取信息的传递将被标记(即使会议明确关闭)。

会有人有任何想法,如何可以打开的连接/会话与预取= 1? 或者有更好的解决办法?

提前致谢,

Answer 1:

解决方法:关闭预取队列水平。



文章来源: Working around pre-fetch in Tibco EMS and .NET API