2

我是服务结构的新手。服务结构,什么微服务最适合从服务总线进行连续轮询

我们在Azure服务总线上有一个队列。我想连续从服务结构中的队列中拉出,处理消息(执行一些业务逻辑),并在数据库中保存一些数据,然后从队列中删除消息。

微服务应该每隔几秒钟检查队列以监视一条新消息。

我的问题是,什么是预期的微服务将提取数据,处理一些业务逻辑,然后保存到数据库。是无状态服务还是可靠演员

+0

你真的需要一个微服务?你可以使用webjob,它会更容易。如果你的微服务只是由一个队列触发的,那真的是一个微服务? – Thomas

+0

@Thomas是的,网络工作可以解决这个问题,但它会使架构复杂化,因为系统的其他部分已经在微服务上,而不仅仅是这个组件,所以使用Fabric中的某些东西更有意义,因为它是一个与我们正在寻找的东西密切相配。 – Adam

回答

3

(编辑:解释的问题有错在先)

我会说这是个人喜好的问题,你选择哪种模式。

您可以在所有节点上运行无状态服务,接收消息并在工作线程上处理它们。

由于Single Entry模型(限制多线程选项),Actor较少能够单手处理大量消息。但演员可以进来数字。你可以让许多Actor来监听消息。你需要确保那些演员成为&但仍然活着。


原来的答案:

这NuGet包做到这一点:https://www.nuget.org/packages/ServiceFabric.ServiceBus.Services 它支持队列,主题,配料和会话。

+0

。看起来它不解决或回答Adam的问题。 – cassandrad

+0

@LoekD,在提交这篇文章之前,我已经在GitHub上看到了你的解决方案。但是,我的问题是特定于我应该使用的微服务的类型。您的解决方案看起来像Fabric上的Service Bus实现,而不是使用Azure SB的方式。 – Adam

+0

我对这两个问题都表示歉意,更改回答 – LoekD

0

您可以使用任何服务。无状态或状态。真的不重要。 在我看来,你可以做如下:

  1. 创建自定义监听器说“ServiceBusCommunicationListener”从ICommunicationListener的。在ICommunicationListener的“Public Task OpenAsync(CancellationToken cancellationToken)”方法中,可以编写代码来访问服务总线队列。
  2. 对于读取服务总线队列,您可以使用“Microsoft.ServiceBus.Messaging.SubscriptionClient”并使用其“OnMessageAsync”方法连续接收消息。
  3. 一旦你有了这个,在你的服务代码中,你可以使用StatefulService的“CreateServiceReplicaListeners”覆盖或者StatelessService的“CreateServiceInstanceListeners”。

    protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners() 
         { 
          return new[] { new ServiceReplicaListener(context => new ServiceBusCommunicationListener(context)) }; 
         } 
    
+0

使用'OpenAsync'从队列中连续选择是个不错的主意。应该调用一次OpenAsync进行初始化,然后释放。最好使用'RunAsync'从队列中进行轮询,然后在'CloseAsync'中取消初始化队列或任何其他资源。 – cassandrad

+0

我的问题更多的是服务的类型而不是实现。但是,感谢您强调这一点。 – Adam

+0

@Adam作为Gopi提到的,​​你可以使用任何类型 - 它不会影响你,但是,当然,最好使用无状态服务,因为你不需要在SF中存储任何数据,不是吗? – cassandrad

1

您的问题空间似乎适合有状态或无状态模型。根据您是否需要维护状态,任何一个都可以。

作为一般性的指导,考虑到演员的模式来模拟您的问题或情况下,如果:

  • 您的问题空间中涉及的状态 小的,独立的和孤立的单位和大量(十万或更多)逻辑。
  • 您希望使用不需要外部组件进行重要交互的单线程对象,其中包括通过一组参与者查询 状态。
  • 您的演员实例不会阻止发出I/O操作的发生不可预料的延迟的呼叫者 。

参考:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-actors-introduction