这在99%的情况下都有效,但有时会导致NullReferenceException
,留下以下StackTrace:
System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.ServiceBus.Messaging.MessageSender.RetrySenderEventDataAsyncResu
lt.<>c.<.ctor>b__5_0(EventData e)
at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate
)
at Microsoft.ServiceBus.Messaging.MessageSender.RetrySenderEventDataAsyncResu
lt..ctor(MessageSender sender, TrackingContext trackingContext, IEnumerable`1 me
ssages, TimeSpan timeout, AsyncCallback callback, Object state)
at Microsoft.ServiceBus.Messaging.MessageSender.BeginSendEventData(TrackingCo
ntext trackingContext, IEnumerable`1 eventDatas, TimeSpan timeout, AsyncCallback
callback, Object state)
at Microsoft.ServiceBus.Messaging.EventHubClient.SendBatch(IEnumerable`1 even
tDataList)
我尝试实现一个重试策略,使用eventhubclient.retryPolicy=retryPolicy.default;
和使用thread.sleep(n)
手动执行递归方法调用,以便给出重新建立连接的时间。
有时连接在10秒后恢复,有时在60秒后恢复,通常永远不会恢复(或者直到我对方法的递归调用击中StackOverflowException
,大约30分钟后,但取决于线程进入Hibernate状态的时间)。从逻辑上讲,我不能拥有我系统中这个不稳定的部分。
有人知道为什么会出现这个异常吗?如果是由于连接中断?
这里的答案原来是一个超载的EventHub。
对于每第100批,等待0.5秒。对于每个NullReferenceException,请等待2秒,然后再用相同的数据重试。在恢复连接之前,可能需要重试100次以上。我尝试了指数级的等待时间,但在我的情况下并不成功(最终等待了几个小时,仍然没有连接)。
当然,在C#
中使用永恒的while循环而不是递归调用。这将防止StackOverflowException
。(菜鸟错误)。
public bool SendMessageAsList(List<EventData list)
{
while(true)
{
var batchList = new List<EventData>();
for (var i = 0; i < list.Count; i + 100)
try
{
if (i % 10000)
Thread.Sleep(500);
batchList = list.Skip(i).Take(100).ToList();
EventHubClient.SendBatch(batchList);
// Gets here at success
list = list.Skip(100).ToList();
if (batchList.Count < 100)
break;
}
catch (NullReferanceException e)
{
Console.WriteLine(e);
Thread.Sleep(2000)
}
}
问题内容: 目前,我正在编写一个应用程序(使用TargetiOS6,已启用ARC),该应用程序使用JSON进行数据传输,并使用CoreData进行持久存储。JSON数据是通过PHP脚本通过json_encode从MySQL数据库生成的。 我的问题是,对于某些表中的数据,以下代码将失败: 程序始终在显示self.jsonSerializationResult的行上崩溃并显示EXC_BAD_ACCES
我们有以下内容:
问题内容: 我已经检查了很多其他线程,因为它们无法使用Django中的静态文件应用程序提供静态内容,但尚未找到解决方案。 settings.py 模板 相关行… 日志 从日志看来,路径是正确的,但可惜它仍然会产生404。 问题答案: 对于本地提供的静态文件, 如果您尚未 设置任何形式的静态文件收集并且运行的是Django 1.3+,我相信这是您引用静态文件时应采用的方式 注意,我在这里省略了。这是
我正在制作一个php注册脚本,注册工作正常,所有内容都已成功输入数据库,激活电子邮件工作正常,但每当我使用mysqli查询来选择或更新信息时,它都不起作用。 例如,当我使用我知道数据库中存在的帐户登录时,它告诉我用户名不存在,当单击电子邮件中的激活链接时,查询无法以相同的方式更新数据库。 我相信这是一个非常简单的错误,我忽略了我的新手,但我找了几个小时后找不到合适的答案。我真的不确定问题出在哪里。
我正在使用Pycharm并试图将文本打印到控制台 最终打印命令('
我正在尝试编写一个SeleniumWebDriver测试,它可以导航到Google,搜索一些东西,然后验证Google是否搜索了输入的内容。然而,下面的代码给出了一个“false”输出,当我看到它是真的时。 我在这个场景中找到的所有代码似乎都是Google Instant之前的代码,我无法在FirefoxDriver中关闭Instant。它还应该等待网页,图像,视频等酒吧被点击之前,检查任何东西;