我们目前在设置WCF服务以连接到tibco EMS服务器时遇到问题。在单实例模式下运行服务时(由于应用程序运行的方式我们无法更改),它将始终首先确认2条消息,即使它只处理了一条消息 - 这会导致某些消息被跳过。
[ServiceBehavior(
ConcurrencyMode = ConcurrencyMode.Single,
InstanceContextMode = InstanceContextMode.Single,
Namespace = "http://tempuri.org/test")]
public class MyService : IMyService
我已经逐步完成了Tibco EMS WCF代码,并且可以看到私有_deliveredList字段中的底层TIBCO.EMS.Session类中有2条消息,即使我只处理了一条消息,它们都标记为需要ACK。队列中有多少消息似乎并不重要,如果长度大于1,它将始终双重确认。
我已使用以下配置应用限制,但它似乎对已发送的初始消息数没有任何影响。
非常感谢任何帮助。
答案 0 :(得分:1)
在处理CLIENT_ACKNOWLEDGE时,看起来这只是Tibco与WCF组件的不良实现。由于会话对象是抽象的,因此您无法确认您无法访问的内容。
选项如下:
还有一个问题,如果你在没有ACK的情况下抛出异常,它将被卡在队列中。