private async Task EventInsertAfterHandle(IEventBase <K> @event, byte[] bytes, int recursion = 0, string mqHashKey = null) { try { if (SendEventToMQ) { if (string.IsNullOrEmpty(mqHashKey)) { mqHashKey = GrainId.ToString(); } //消息写入消息队列 await MQService.Send(@event, bytes, mqHashKey); } //更改消息状态 await EventStorage.Complete(@event); //保存快照 await SaveSnapshotAsync(); } catch (Exception e) { if (recursion > 5) { throw e; } this.GetLogger("Event_Raise").Log(LogCodes.EventCompleteError, Orleans.Runtime.Severity.Error, "事件complate操作出现致命异常:" + string.Format("Grain类型={0},GrainId={1},StateId={2},Version={3},错误信息:{4}", ThisType.FullName, GrainId, @event.StateId, @event.Version, e.Message), null, e); int newRecursion = recursion + 1; await Task.Delay(newRecursion * 200); await EventInsertAfterHandle(@event, bytes, newRecursion, mqHashKey : mqHashKey); } }