Tag: azure service fabric

服务面料提醒

文件说: 提醒是一种在指定时间触发actor上的持久回调的机制。 它们的function类似于计时器。 但与计时器不同的是,在所有情况下都会触发提醒,直到演员明确地取消注册或明确删除演员。 具体而言,由于Actors运行时会保留有关actor的提醒的信息,因此会在actor停用和故障转移时触发提醒。 假设我们有一个提醒设置在1h后运行,但是Actor的空闲超时为10分钟,扫描间隔为2分钟(在actor的ActorGarbageCollectionSettings )。 在演员空闲的前15分钟之后会发生什么,所以是GC并取消激活..那么如何知道在45分钟后重新创建演员? 它是如何知道用于创建Actor的actor ID? 请求因为我想知道这些模式是如何工作的: https://www.codit.eu/blog/2016/08/25/how-to-enable-automatic-scheduling-in-service-fabric-actors/ https://dajbych.net/azure-service-fabric-scheduled-tasks

在Azure Service Fabric服务中实例化ServiceInitializationParameters的位置和方式是什么?

尝试在我的服务中使用自定义应用程序配置。 这篇文章给出了部分答案,但没有解释如何以及在何处初始化ServiceInitializationParameters对象,这是使其工作所必需的。 该对象似乎没有构造函数。 来自Microsoft的文档很粗略,GitHub上提供的示例似乎没有使用任何自定义应用程序配置。

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

我正在构建一个应用程序,其中我有多个不同的actor类型,它们对于某些不同的数据对象具有相同的行为(CRUD)。 为了更轻松地创建处理这个的代码,我试图创建一个接口,这些actor可以实现。 这意味着我有一个看起来像这样的actor接口: public interface IMyActor1 : IActor, IDataActor, IDataActor IDataActor如下: public interface IDataActor where T : IDataItem { Task Create(T item); Task Read(string itemId); Task Update(T item); Task Delete(string itemId); } 而自己的演员看起来像这样 class MyActor1: Actor, IMyActor1 { … } 最初我尝试从IActor派生IDataActor ,但可以理解这是不允许的,我得到一个“通用接口不能远程”。 我尝试部署时出错,所以我尝试了这个。 当我构建项目时,我得到以下错误日志: System.ArgumentException: The actor type ‘MyProject.ActorProject.MyActor1’ does not implement any actor interfaces. […]

服务结构中的配置转换?

当您通过Visual Studio创建一个空的Service Fabric应用程序时,项目模板将自动为您创建不同的配置文件,如Node1.XML,Node5.XML等。 我们更少关注节点数量而不是我们所针对的环境。 只有1个配置文件并从中创建转换,与Service Fabric建议相反吗? 例如,我们可能会有这样的事情: <!– ClusterConnectionParameters allows you to specify the PowerShell parameters to use when connecting to the Service Fabric cluster. Valid parameters are any that are accepted by the Connect-ServiceFabricCluster cmdlet. For a remote cluster, you would need to specify the appropriate parameters for that specific cluster. For example: Example […]

访问Azure Service Fabric状态服务状态

我已将WebAPI添加到我的有状态服务器中,并希望从中访问StateManager (来自StatefulService类实现之外)。 最好的方法是什么? 目前我正在使用一个小类: internal static class InstanceAccessor { internal static StatefulService ActiveInstance { get; set; } } 并将值放在StatefulService RunAsync方法中: protected override async Task RunAsync(CancellationToken cancellationToken) { InstanceAccessor.ActiveInstance = this; …

有状态服务的dependency injection

我有一个Service Fabric状态服务,它包含一个RunAsync循环和一个OWIN Web API监听器。 是否可以在StatefulServiceinheritance的类和API控制器中添加dependency injection? 我真的只能得到一个或另一个。 如果我将容器逻辑放在Startup.cs中,那么我可以轻松地为Web API控制器获取DI,但不能获得有状态服务。 如果我将容器逻辑放在Program.cs中,那么我可以获得有状态服务而不是web api。 (实际上这感觉更像服务定位器,但在这种情况下我没关系) Program.cs中 private static void Main() { var builder = new ContainerBuilder(); builder.RegisterModule(); var container = builder.Build(); ILogger logger = container.Resolve(); ServiceRuntime.RegisterServiceAsync(“MyService”, (context) => new MyService(context, logger)).GetAwaiter().GetResult(); } 在没有将IContainer传递给StatefulService构造函数的情况下,我不知道如何将其用于Web API的Startup初始化以设置DependencyResolver。

Service Fabric在启动时生成actor

有没有办法要求系统在启动时产生某些演员。 目前我在演员注册后激活了Program.cs中我需要的演员集。 这工作正常,但我偶尔会得到一个ReminderLoadInProgressException因为正在激活的actor需要注册一个提醒,但并非所有提醒都在它尝试这样做时被加载。 是否有种子集群的标准方法?

如何使用tfs 2013与服务架构持续集成?

关于如何为VSTS和TFS 2015+创建构建定义以进行Service Fabric持续集成和部署,存在大量文档和示例。 在与TFS 2013集成以部署Service Fabric应用程序方面有哪些可用的方法? 我们如何将本地Service Fabric集群/应用程序/服务的构建和部署与TFS 2013集成?

如何从服务结构actor获取状态而无需等待其他方法完成?

我有一个正在运行的服务,正在迭代X个actor,使用ActorProxy询问它们的状态。 对我来说很重要的是,这个服务不会被等待提醒回调中等待演员中其他一些长时间运行的方法。 有没有办法调用下面的简单示例GetState(),它允许方法正确完成,而不会阻止某些提醒运行。 class Actor : IMyActor{ public Task GetState() => StateManager.GetAsync(“key”) } alterntive。 什么是形成服务呼叫的正确方式,如果它不在5秒内回复,只是包含。 var proxy = ActorProxy.Create<IMyActor(); var state = await proxy.GetState(); // this will wait until the actor is ready to send back the state.

服务结构服务远程处理

在过去的几周里,我一直在从云服务迁移到Service Fabric,并且使用两种服务之间的Remoting遇到了一些绊脚石。 我一直在使用Service Remoting上的官方文档和示例代码,特别是我试图让这里概述的示例工作: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-services-communication-remoting 我有2项服务。 一个名为“RemoteService” ,另一个名为“CallerService” 。 两者都源自默认的无状态服务项目。 在“RemoteService”和“CallerService”项目中,我添加了以下接口来描述它们之间的服务契约: public interface IMyService : IService { Task HelloNameAsync(string name); } 在“RemoteService”中,我在RemoteService类中创建了相关联的方法 public Task HelloNameAsync(string name) { return Task.FromResult(“Hello ” + name + “!”); } 我还使用以下内容覆盖CreateServiceInstanceListeners protected override IEnumerable CreateServiceInstanceListeners() { return new[] { new ServiceInstanceListener(context => this.CreateServiceRemotingListener(context)) }; } 在我的“CallerService”中,当我尝试连接时,使用以下内容调用“RemoteService”: IMyService helloNameClient = ServiceProxy.Create(new […]