XmlRpc IllFormedXmlRepsonse上的无限重试

时间:2013-02-27 06:18:01

标签: c# .net-4.0 xml-rpc

我目前正在使用Cook Computing XmlRpc库集成两个系统,并从其中一个系统返回一些混乱的响应。

该系统的开发人员向我保证,这是他们的结果,并且问题将在4月初之前得到解决。可以想象,如果一个系统碰巧得到更新而另一个系统返回错误响应,那么我的同步问题非常严重。

无论如何,直到4月我基本上必须重试每次调用系统,直到它没有返回XmlRpcIllFormedXmlException。由于这个问题是完全断断续续的暂时性的,它通常会在最终工作之前失败~1~3次,但是我已经看到10次以上的重试,所以这些数字绝不是最大值。

我为处理这个可怕的场景而编写的代码开始让我担心,因为我正在有效地编写一个带有异常处理控制流的无限循环,但我看不到任何其他方法!

所以我的问题是:我在做什么本质上是错误的,这可能会在下个月引起一些严重的问题吗?

while(true)
{
    try
    {
        XmlRpcStruct data = // AnyDataQuery

        if(data.Count() > 0)
            return new Contacts(data);
        else
            return null;
    }
    catch(XmlRpcIllFormedXmlException)
    {
          // Ensure we have not hit maximum retries.
          // Sleep thread for 500ms to avoid hitting api limit (this is no the ui thread)
          // Swallow exception and retry.

    }
}

我只想重申,在有人问为什么数据填满注释之前,我的代码不是问题; p这只是对系统调用的包装器的一般格式。

我还在实际代码中跟踪重试,以避免达到API调用限制。

(如果这属于代码审查,请移动它!我觉得它属于SO,因为它是有点错误的代码,即使用控件+无限循环的异常)

0 个答案:

没有答案