azure - 与 Actor 进行即发即忘消息传递?

标签 azure azure-service-fabric

据我所知,Service Fabric 的参与者模型仅支持“请求-答复”样式的通信。有什么方法可以实现“一劳永逸”式的沟通吗? (例如:就像 Akka 中的“询问”与“告诉”消息一样?)

我遇到了这篇博文 ( http://mikhail.io/2016/01/fire-and-forget-in-service-fabric-actors/ ),但不确定这是否会产生任何负面后果,或者是否有推荐的方法来实现此目的?

最佳答案

在你的actor上有一个初始化方法,它可以为你的任务提供所需的种子。设置一个计时器并从初始化方法返回。当计时器触发时,关闭计时器,并运行您的逻辑“Fire and Forget”,以保证您的工作得到执行。下面是粗略的示例。

public class SomeActor : Actor, ISomeActor
{
    private IActorTimer _sendTimer;

    protected override async Task OnActivateAsync()
    {
        await base.OnActivateAsync();
    }

    protected override async Task OnDeactivateAsync()
    {
        await this.ExecuteAgents();
        await base.OnDeactivateAsync();
    }

    public Task Initialize()
    {
        if (_sendTimer == null)
        {
            //setup timer
            _sendTimer = this.RegisterTimer((obj) =>
            {
                return this.Execute();
            },
                null,
                TimeSpan.FromSeconds(1),
                TimeSpan.FromSeconds(30));
        }
    }

    private async Task ExecuteAgents()
    {
        this.UnegisterTimer(_sendTimer);

        //Perform workload
    }
}

关于azure - 与 Actor 进行即发即忘消息传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38103815/

相关文章:

azure - 在 Azure Service Fabric 中查找有状态服务的分区键

azure-service-fabric - Service Fabric可靠的队列长时间运行

Azure Devops nuget 工件源和 docker

database - 单个嵌入文档中的 Cosmos DB SQL 查询

debugging - Azure 服务结构中与远程端点的连接已终止错误

azure - 在 ServiceFabric 中启用 'EventStore' 失败

azure-service-fabric - Service Fabric Actor 的性能是否不可靠?

azure - 从 Azure BLOB 存储在 Azure SQL DW 中创建外部表

azure - 无法加载文件或程序集 "Microsoft.Azure.Store.Emulator.Controller, Version=4.0.0.0"

azure - 当 azure 函数返回值时发出警报