Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在并发模式下使用Tibco EMS WCF复制ACK。单一模式_.net_Wcf_Jms_Tibco_Tibco Ems - Fatal编程技术网

.net 在并发模式下使用Tibco EMS WCF复制ACK。单一模式

.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

我们目前有一个问题,我们已将WCF服务设置为连接到tibco EMS服务器。在单实例模式下运行服务时(由于应用程序的运行方式,我们无法更改),它将始终首先确认2条消息,即使它只处理了一条消息-这将导致跳过一些消息

[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
  • 使用显式客户端确认

还有一个问题,如果您在没有确认的情况下抛出异常,它将卡在队列中。

您使用的是什么消息确认模式(例如,客户端确认、自动确认等)?我使用的是客户端确认。您使用的是什么消息确认模式(例如,客户端确认、自动确认等)?我正在使用客户确认。