Azure Service Fabric Actor-未处理的异常?

乔纳森·佩珀斯

现在,我们的ASF集群正在运行:

  • Web API项目-无状态且面向公众
  • Actor项目-大多数情况下易失,将数据保存在内存中,由某些API使用

我们正在尝试Application Insights,并且我可以像这里的文档一样为我们的Web API项目设置未处理的错误跟踪

问题是,我也希望我们的Actor项目也能做到这一点。

是否存在在Actor中捕获未处理的错误的全球场所?我知道它是新的,也许这就是为什么我找不到关于此的文档。

现在,我正在每个actor方法中执行此操作,但似乎不是一个很好的解决方案:

public async Task DoStuff()
{
    try
    {
        //Do all my stuff
    }
    catch (Exception exc)
    {
        //Send to Windows Event Source
        ActorEventSource.Current.ActorMessage(this, "Unhandled error in {0}: {1}", nameof(DoStuff), exc);

        //Send to Application Insights
        new TelemetryClient().TrackException(exc);

        throw exc;
    }
}
埃利·阿尔贝尔(Eli Arbel)

您有几种选择:

  • 演员确实具有一个Microsoft-ServiceFabric-Actors带有ActorMethodThrewException事件的内置ETW提供程序(您可以:

    • 使用外部过程来收集ETW事件并将其转发到Application Insights(例如,使用SLAB或Azure诊断程序)
    • 使用EventListener该类来侦听正在进行的事件,并将其转发给App Insights(可靠性稍差,但更简单)
  • 使用custom ActorServiceRemotingDispatcher,这是负责向操作者分派操作的类

    class CustomActorServiceRemotingDispatcher : ActorServiceRemotingDispatcher
    {
        public CustomActorServiceRemotingDispatcher(ActorService actorService) : base(actorService)
        {
        }
    
        public override async Task<byte[]> RequestResponseAsync(IServiceRemotingRequestContext requestContext, ServiceRemotingMessageHeaders messageHeaders,
            byte[] requestBodyBytes)
        {
                try
                {
                    LogServiceMethodStart(...);
    
                    result = await base.RequestResponseAsync(requestContext, messageHeaders, requestBodyBytes).ConfigureAwait(false);
    
                    LogServiceMethodStop(...);
    
                    return result;
                }
                catch (Exception exception)
                {
                    LogServiceMethodException(...);
    
                    throw;
                }
        }
    }
    

    要使用此类,您需要创建一个自定义ActorService类并覆盖该CreateServiceReplicaListeners方法。请注意,这将覆盖ActorRemotingProviderAttribute您可能正在使用的所有。

    旁注:

    • 您还可以使用此方法读取自己的标头(还需要客户端自定义IServiceRemotingClientFactory添加标头
    • 可以将相同的技术应用于可靠服务(使用ServiceRemotingDispatcher类)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Azure Service Fabric Actor-未处理的异常?

来自分类Dev

Azure Service Fabric actor提醒更新?

来自分类Dev

Azure Service Fabric Actor依赖项注入

来自分类Dev

Azure Service Fabric actor微服务

来自分类Dev

查询Azure Service Fabric中的Actor列表

来自分类Dev

Azure Service Fabric如何调整Actor和网络的大小

来自分类Dev

Azure Service Fabric与Project Orleans中的Actor粒度

来自分类Dev

用于用户表示的Service Fabric Service与Service Fabric Actor

来自分类Dev

Azure Service Fabric(Preview)Actors SDK为Actor继承提供了惊人的行为

来自分类Dev

Azure Service Fabric(Preview)Actors SDK为Actor继承提供了惊人的行为

来自分类Dev

Service Fabric在启动时生成actor

来自分类Dev

实现多个接口的Service Fabric Actor接口

来自分类Dev

Azure Service Fabric的使用

来自分类Dev

Azure Service Fabric 路由

来自分类Dev

Azure serviceBusService的未处理异常

来自分类Dev

创建新的Azure Service Fabric状态服务时发生异常

来自分类Dev

如何为远程Service Fabric群集创建actor代理

来自分类Dev

如何使用状态对Service Fabric Actor进行单元测试

来自分类Dev

Service Fabric,Akka.net和Persistent actor集成

来自分类Dev

如何创建Actor代理到远程Service Fabric群集

来自分类Dev

调用 Service Fabric Actor 服务时出现 MethodAccessException

来自分类Dev

Azure Service Fabric消息队列

来自分类Dev

Service Fabric Azure测试环境

来自分类Dev

Azure Service Fabric多租户

来自分类Dev

Azure Service Fabric更改IP

来自分类Dev

Azure Service Fabric提醒GetReminder

来自分类Dev

Azure Service Fabric v 单体

来自分类Dev

Azure Web应用未处理的异常

来自分类Dev

Azure Service Fabric中可靠的Blob状态?

Related 相关文章

热门标签

归档