.net 在并发模式下使用Tibco EMS WCF复制ACK。单一模式
我们目前有一个问题,我们已将WCF服务设置为连接到tibco EMS服务器。在单实例模式下运行服务时(由于应用程序的运行方式,我们无法更改),它将始终首先确认2条消息,即使它只处理了一条消息-这将导致跳过一些消息.net 在并发模式下使用Tibco EMS WCF复制ACK。单一模式,.net,wcf,jms,tibco,tibco-ems,.net,Wcf,Jms,Tibco,Tibco Ems,我们目前有一个问题,我们已将WCF服务设置为连接到tibco EMS服务器。在单实例模式下运行服务时(由于应用程序的运行方式,我们无法更改),它将始终首先确认2条消息,即使它只处理了一条消息-这将导致跳过一些消息 [ServiceBehavior( ConcurrencyMode = ConcurrencyMode.Single, InstanceContextMode = InstanceContextMode.Single, Namespace = "http://t
[ServiceBehavior(
ConcurrencyMode = ConcurrencyMode.Single,
InstanceContextMode = InstanceContextMode.Single,
Namespace = "http://tempuri.org/test")]
public class MyService : IMyService
我已经浏览了Tibco EMS WCF代码,可以看到private _deliveredList字段中的底层Tibco.EMS.Session类中有2条消息,尽管我只处理了一条消息,但这两条消息都标记为Required ACK。队列中有多少消息似乎无关紧要,如果长度大于1,它将始终双重确认
我对以下配置应用了节流,但它似乎对发送的初始消息数没有任何影响
非常感谢您提供的任何帮助。看起来Tibco在处理客户端时使用WCF组件实现的效果很差。由于会话对象是抽象的,因此您无法真正确认您无权访问的内容 方案如下:
- 将队列上的预取设置设置设置为1
- 使用显式客户端确认
还有一个问题是,如果您在没有确认的情况下抛出异常,它将卡在队列上。看起来这只是Tibco在处理客户端确认时使用WCF组件的一个糟糕的实现。由于会话对象是抽象的,因此您无法真正确认您无权访问的内容 方案如下:
- 将队列上的预取设置设置设置为1
- 使用显式客户端确认
还有一个问题,如果您在没有确认的情况下抛出异常,它将卡在队列中。您使用的是什么消息确认模式(例如,客户端确认、自动确认等)?我使用的是客户端确认。您使用的是什么消息确认模式(例如,客户端确认、自动确认等)?我正在使用客户确认。