所有在Tibco EMS 5. *和.NET API
的上下文中我要使用现有的消息处理模型,在循环中:
如果message!= null,那么我们使用它并提交或回滚事务(在底层会话上)。系统在该模型中每x秒拉一次。
我创建了一个连接工厂,确保只创建新会话(如果前一个会话仍在使用中)。这样,系统就可以在同一个连接上工作。
但是,由于每个Receive调用(通过.NET接口)返回一条消息并将几个(pre-fetch-1)放入本地队列,因此我遇到了预取问题。 所以我应该在下次重复使用相同的会话,以便读取已经被拉出的消息。 我已经使用包装来重用会话和放大器。消息使用者只要有东西(Receive不会返回null)。 这种方法很有效,但似乎我可能在Receive上获得null,即使在本地仍然存在某些东西。 似乎只要我在同一个连接上,提取的消息将被标记为已传递(即使会话明确关闭)。
有人知道如何使用pre-fetch = 1打开连接/会话吗? 还是有更好的解决方案?
提前致谢,
答案 0 :(得分:1)
解决方法:关闭队列级别的预取。