问题标签 [service-fabric-actor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1347 浏览

c# - 如何将数据传递给“OnActivateAsync()”以初始化我的有状态演员?

我正在创建一个可靠的、有状态的服务参与者。

问题:

有没有办法在actor代理创建期间传递初始化数据(ActorProxy.Create())?基本上相当于我的演员的构造函数。

目前的想法:

我可以通过使用负责初始化状态的参与者方法调用来跟踪代理创建调用来实现这一点。

例如

我对这种方法的担忧:

  • 这个操作不是原子的。它可能会使我的演员处于不一致的状态
  • 这种初始化方法现在在 Actor 的整个生命周期中都可用,这是不希望的。
0 投票
2 回答
2787 浏览

c# - Service Fabric 在启动时生成 Actor

有没有办法要求系统在启动时产生某些演员。

目前我激活了我需要的一组演员Program.cs目前,我在演员注册后

这工作正常,但我偶尔会得到一个ReminderLoadInProgressException,因为被激活的演员需要注册一个提醒,但在它尝试这样做时并非所有提醒都已加载。

是否有标准方法来播种集群?

0 投票
1 回答
425 浏览

c# - 是否可以为许多参与者和/或服务提供一种解决方案?

是否可以为许多参与者和/或服务提供一个解决方案,或者每个参与者、服务是否需要自己的解决方案和自己的主机?

您如何注册这样的服务?

目前我有

它正在爆炸,说:

服务类型无效

在我将 Actor 添加到解决方案之后。

我找不到任何这样的例子。

0 投票
1 回答
538 浏览

c# - 在 RunAsync 中生成演员抛出“接口 id '1830616258' 未由对象'CustomActorService.InternalCustomActorService'实现”

我正在遵循Service Fabric spawn actor on startup中的建议,以便在服务启动时生成几个 actor。我有一个具有以下 RunAsync 覆盖的自定义 ActorService 子类:

该类在 Program.cs 中注册如下:

但是,我得到以下异常调用proxy.StartAsync()方法:

示例项目在 GitHub 上https://github.com/PaloMraz/CustomActorServiceApp

我的问题是:我做错了什么?

编辑:我试图添加额外BootstrapperService的无状态服务并从那里产生演员BootstrapperService.RunAsync

然而,调用会proxy.StartAsync()引发与上述完全相同的异常InternalCustomActorService.RunAsync

0 投票
1 回答
2516 浏览

c# - Service Fabric Actor 服务依赖注入和 Actor 事件

当演员服务启动时,我想自动订阅文档中描述的任何事件。手动订阅事件有效。但是,当服务被实例化时,是否有办法自动订阅参与者服务,例如在 OnActivateAsync() 中?

我试图做的是通过依赖注入来解决这个问题,即在 MyActor 类的实例化中,它传递一个接口, OnActivateAsync 调用该接口为客户端订阅事件。但是我遇到了依赖注入的问题。

使用 Microsoft.ServiceFabric.Actors.2.2.207 应该支持对参与者服务的依赖注入。现在,在实现 Microsoft.ServiceFabric.Actors.Runtime.Actor 时,会使用 ActorService 和 ActorId 参数创建一个默认构造函数。

我想添加我自己的构造函数,该构造函数传入了一个额外的接口。你如何编写演员服务的注册以添加依赖项?在默认 Program.cs Main 它提供了这个

但是在它说“()=>新MyActor(myInjectedInterface)”的那一行它告诉我一个错误

委托 'Func' 不接受 0 个参数

查看 Actor 类的构造函数,它具有以下内容

MyActor.Cs

1) 如何解决我在尝试解决 Actor 依赖项时收到的错误?

委托 'Func' 不接受 0 个参数

奖金问题:

当我的无状态服务(调用客户端)调用接口实例时,如何解析 IMyInjectedInterface 以注入到参与者服务中?

0 投票
3 回答
930 浏览

c# - Reliable Actor with multiple interfaces?

Is there a way to create an actor that has two interfaces? I want to define the public interface in the Interfaces assembly and the internal interface in the actor assembly. The reason is to separate methods that clients should use and methods that the system should use.

For example:

It looks like this is not possible because the ActorService attribute only allows for a single name.

Is there a better way (that works) to segregate public and internal methods?

0 投票
3 回答
1822 浏览

c# - Service Fabric - 存储列表在 StateManager 中寻找可靠的演员

我的一个用例需要存储来自单个事件生产者的“开始”和“停止”事件之间的所有事件。我们将使用可靠的参与者来处理这些数据并在收到“停止”事件后进行汇总。在开始和停止之间存储所有事件的直接方法是使用 List 类型。

据我了解,每次获取现有列表时,添加一个新项目并存储新的更新列表,StateManager 将序列化/反序列化整个数组。我的理解正确吗?

什么是这个解决方案的好选择?

0 投票
2 回答
1594 浏览

c# - Azure Service Fabric Actor 初始化

如何在创建时初始化 Azure Service Fabric Actor?

我试过用初始化方法重载actor构造函数,但没有奏效。

我必须在创建演员后从客户端调用初始化方法,还是有办法让演员在创建过程中自动初始化自己?

0 投票
0 回答
215 浏览

azure-service-fabric - ServiceProxy.Create 要求主要返回次要副本

我正在从不同的参与者类型访问具有远程处理的服务。他们通过基类中的共享代码调用 ServiceProxy.Create 方法来做到这一点。

我有用于访问主副本和辅助副本的用例,并使用指定 TargetReplicaSelector 的方法重载。这通常工作得很好。

在对服务进行升级之后(无需更改代码,只是测试在运行时进行升级如何影响通信),一些参与者(总是相同的类型!)在调用 ServiceProxy.Create 时获得对辅助副本的引用,甚至虽然我特别要求使用 TargetReplicaSelector.PrimaryReplica 参数的主副本。其他演员类型继续获得应有的主要地位。

这怎么可能?

编辑1:我知道在升级过程中,主要将成为次要,并且任何次要都将成为主要。我可以在升级期间在资源管理器中看到这一点。

所以看起来 ServiceProxy.Create - 当从某些参与者类型调用时 - 保留了一些关于哪个副本是主要的过时信息?我虽然那个 ServiceProxy 会自动检测这些变化?这是一个错误还是我做错了什么?

Edit2:我发现此服务远程处理文档页面的评论:

Yongjun Dec 7, 2016 如何处理/断开远程服务,

在我们的产品中,在有状态服务 A 中,它会通过 ServiceProxy.Create 连接到另一个有状态服务 B

但是在服务A切换后,通过“netstat -ano”它仍然有到服务B的连接,如果服务A再次切换到主服务器,它将有两个连接到服务B

似乎是同样的问题。

问题:如何避免这个问题?

0 投票
0 回答
577 浏览

azure - Azure Service Fabric - 适用于 Windows 容器上托管的应用程序的 HTTP 504

我使用“Windows 2016 DataCenter with Containers”操作系统创建了一个 Azure Service Fabric 集群,并在集群的 80 端口上启用了反向代理侦听。我已经在这个集群上部署了一个示例容器应用程序。

我可以通过公共负载均衡器访问它,但是当我尝试通过反向代理访问它时,我会收到随机的 HTTP 504(网关超时)错误。

是否有人在通过反向代理访问容器托管应用程序时遇到 504 超时错误?任何帮助将不胜感激。

谢谢, 高拉夫