Tag: azure service fabric

向在Service Fabric Cluster中的特定节点上运行的ASP.Net Core Web API发送请求

我正在开发一个Service Fabric应用程序,我在其中运行包含一堆ASP.NET Core Web API的Application。 现在,当我在配置有5个节点的本地服务结构集群上运行应用程序时,应用程序成功运行,并且我能够发布公开Web API的发布请求。 实际上,我想点击在同一个集群节点上运行的代码,该节点对该特定节点上的公开API有不同的发布请求。 有关进一步说明,例如,在节点“0”上公开的API接受发布请求并执行作业,并且还有一个API可以中止正在运行的作业。 现在,当我请求执行作业时,它开始在节点’0’上执行,但是当我尝试中止作业时,服务结构集群将请求转发到不同的节点,例如节点’1’。 结果我无法中止正在运行的Job,因为节点’1’上没有可用的正在运行的Job。 我不知道如何处理这种情况。 对于州,我使用的是ASP.Net Core Web API类型的无状态服务,并在我的本地服务结构集群的5个节点上运行应用程序。 请建议什么是最好的方法。

在Service Fabric应用程序中运行时,WebJob SDK无法正常工作

我想在作为Service Fabric应用程序运行的无状态服务中使用WebJob SDK。 不幸的是我无法让它正常运行。 下面是重现问题的测试代码的一部分。 永远不会调用“ProcessMethod”。 触发函数“ProcessNotificationsInQueue”也从不执行(是的,队列中有项目)。 虽然应用程序仍在运行,但应用程序的“运行状况”在Service Fabric Explorer中设置为“错误”。 DashboardConnectionString和StorageConnectionString都具有正确的值。 当它在控制台应用程序或WorkerRole中运行时,我看不到任何类似代码的问题。 我错过了什么吗? 有没有人在Service Fabric应用程序中成功使用过WebJob SDK? public sealed class TestStatelessService : StatelessService { public TestStatelessService(StatelessServiceContext context) : base(context) { } /// /// Optional override to create listeners (eg, TCP, HTTP) for this service replica to handle client or user requests. /// /// A collection of […]

在生产Azure Service Fabric群集中找不到libsodium-64.dll

使用libsodium-net在Azure Service Fabric Reliable Service中实现其所有安全性,在我的本地开发群集上一切正常(尽管我必须将libsodium-64.dll设置为复制到输出目录)。 不幸的是,当部署到Azure中的真实集群时,它会抛出以下错误: Unable to load DLL ‘libsodium-64.dll’: The specified module could not be found. (Exception from HRESULT: 0x8007007E) 我已通过远程桌面检查到其中一个节点,并将DLL复制到与服务相同的目录中,就像在我的开发群集中一样。 无法解决为什么在生产中找不到它。 我已经尝试按照这个答案中的建议设置PATH环境变量,并validation它实际上已经设置 – 不幸的是,这没有帮助。 为了让ASF拿起DLL,我需要做些什么特别的事情吗? 编辑:还尝试在所有节点上将DLL添加到System32,也没有解决它。

通过Service Fabric项目进行调试时未使用的环境变量

在创建ASP.NET Core应用程序时,将为您设置一个名为ASPNETCORE_ENVIRONMENT=Development的环境变量,在调试时您将看到IHostingEnvironment设置为Development 。 问题是,当我在为Service Fabric设置的解决方案中使用相同的项目时,环境变量似乎没有被注入, IHostingEnvironment只返回“生产”。 我该如何解决这个问题? 注意:我在启动类中设置了一个断点来观察IHostingEnvironment变量。

具有通用服务的服务结构

我希望有一个通用类型的服务,即 – public interface IFooService { Task Get(int id); } 但是,服务结构不允许generics类或generics方法。 我也尝试过类似的东西 public interface INinjaService : IService, IFooService { } 但它没有选择inheritance的接口说明 服务类型“Omni.Fabric.Services.NinjaService”未实现任何服务接口。 服务接口是从“Microsoft.ServiceFabric.Services.Remoting.IService”类型派生的接口。 我似乎无法在Service Fabric文档或stackoverflow上找到任何关于generics的引用。 要么它仍然太新,要么我可能走错了路。 有没有人有幸实现这种模式? 可以吗? 它应该完成吗? NinjaService按要求提供 public class NinjaService : StatelessService, INinjaService { public NinjaService(StatelessServiceContext serviceContext) : base(serviceContext) { } protected override IEnumerable CreateServiceInstanceListeners() { return new[] { new ServiceInstanceListener(context => […]

Azure服务结构actordependency injection

有没有办法将依赖项注入Azure Service Fabric Actor的构造函数?

Azure Service Fabric Actors – 未处理的exception?

现在我们的ASF集群正在运行: Web API项目 – 无状态和面向公众 Actor项目 – 主要是volatile,将数据保存在内存中,由某些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; } }

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

根据Service Fabric文档( https://azure.microsoft.com/en-us/documentation/articles/service-fabric-reliable-actors-introduction/ ),以这种方式创建了一个actor代理: ActorId actorId = ActorId.NewId(); IMyActor myActor = ActorProxy.Create(actorId, new Uri(“fabric:/MyApp/MyActorService”)); await myActor.DoWorkAsync(); 好的,这可以工作并连接到我的本地群集。 但我无法弄清楚如何创建远程集群的代理? (我有一个三节点集群,IP为10.0.10.10,10.0.11.10,10.0.12.10。) 我还尝试使用ServicePartitionResolver ,这里有解释: https : //azure.microsoft.com/en-us/documentation/articles/service-fabric-reliable-services-communication/ ,但没有成功。

从Azure Service Fabric群集模拟10,000个Azure IoT Hub设备连接

我们正在开发一个.Net Core服务,该服务将托管在Azure Service Fabric中。 此SF服务需要通过其AMQP 1.0 SSL TLS端点与在Azure IoT Hub中注册的10,000个设备进行交互。 每个IoT Hub设备都有自己的安全令牌和IoT Hub服务提供的连接字符串。 对于我们的场景,我们需要收听来自10,000 IoT Hub设备实例的所有云到设备消息,并将这些消息“路由”到该字段中实际“网关”监听的中央服务总线主题。 所以基本上我们想要将来自10,000个服务总线队列的消息转发到一个中央队列中。 从SF服务处理这10,000个AMQP列表的最佳方法是什么? 有没有办法可以重用AMQP连接,会话或链接,以便我们缓存/共享资源? 我们如何在SF集群中的5个节点上动态分散连接维护的负载? 我们正在为实现评估这些Nuget包: Microsoft.Azure.ServiceBus AMQPNetLite Microsoft.Azure.Devices.Client 我们正在使用Microsoft.Azure.Devices.Client lib进行一些测试,请参阅下面的简化代码示例: using System; using System.Fabric; using System.Text; using System.Threading; using System.Threading.Tasks; using Microsoft.Azure.Devices.Client; using Microsoft.ServiceFabric.Services.Runtime; namespace ID.Monitoring.MonServer.ServiceFabric.ServiceBus { /// /// An instance of this class is created for each service […]

FabricNotReadableException是什么意思? 我们该如何应对呢?

我们在Service-Fabric的Stateful Service中使用以下方法。 该服务有分区。 有时我们会从这段代码中获得FabricNotReadableException。 public async Task HandleEvent(EventHandlerMessage message) { var queue = await StateManager.GetOrAddAsync<IReliableQueue>(EventHandlerServiceConstants.EventHandlerQueueName); using(ITransaction tx = StateManager.CreateTransaction()) { await queue.EnqueueAsync(tx, message); await tx.CommitAsync(); } } 这是否意味着分区已关闭并正在移动? 我们打了一个二级分区? 因为在某些情况下还会引发FabricNotPrimaryException。 我见过MSDN链接( https://msdn.microsoft.com/en-us/library/azure/system.fabric.fabricnotreadableexception.aspx )。 但那是什么呢 表示当分区无法接受读取时引发的exception。 意思? 分区无法接受读取的情况怎么办?