gpt4 book ai didi

c# - 在 WCF 可靠请求回复服务方法中回复时如何处理失败

转载 作者:行者123 更新时间:2023-11-30 18:38:50 25 4
gpt4 key购买 nike

在可靠的请求回复中,我理解该回复是公认且可靠的。如果出于某种原因,回复消息在所有 8 次尝试(默认重试次数为 8 次)中持续失败,则 channel 将出现故障。

在服务器端服务方法中,如果回复失败,我需要采取措施,但由于服务方法不知道 WCF 上下文,我不知道如何实现这一点。

    /// <summary>
/// This is my service method, and does the reply in reliable request reply
/// </summary>
/// <returns></returns>
public IModelJob GetNextJob()
{
//dequeue the next item if there is any
var modelJob = _priorityQueue.Dequeue();

//if all attempts to reply fail (or at least fail to be acknowledged) then when and how do I get a chance to requeue this job?
return modelJob;

}

当您是客户端并在代理本身上调用服务方法时,似乎更容易处理故障,因为您可以从 ClientBase 实现自己的代理。

我读过:http://msdn.microsoft.com/en-us/library/aa480191.aspx , 并搜索了但找不到任何具体内容。

最佳答案

从您最终支持的业务运营的角度来考虑。例如,如果服务期望每隔 30 分钟从客户端收到一系列消息,那么您可能会要求(在业务意义上)如果消息在 120 分钟内没有看到,那么服务应该通知行政人员。这将在驱动您的服务的业务逻辑中实现。

当它没有收到消息时不能让它抛出异常并不是 WCF 的缺点 - 它怎么知道它应该首先期待一个消息?

请记住,可靠消息传递在应用程序下面的一层工作,就像 TCP 重传发生时您的 HTTP 应用程序根本不知道一样。事实上,在 TCP 级别需要进行一次或多次重传,这与接收方无关,当然也不会在协议(protocol)栈中抛出异常。最终由数据的发送者检测到数据无法发送,并对此采取措施。或者,在我给出的示例中,服务背后的业务逻辑在业务级别实现需求。

您可能对 blog post 感兴趣我写了一些 WS-ReliableMessaging 的缺点。

关于c# - 在 WCF 可靠请求回复服务方法中回复时如何处理失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10875942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com