簡體   English   中英

服務結構,什么微服務最適合從服務總線進行連續輪詢

[英]Service Fabric, What Microservices is best intended for continuous polling from Service Bus

我是Service Fabric的新手。

我們在Azure Service Bus上有一個隊列。 我想連續從Service Fabric中的隊列中提取消息,處理消息(執行一些業務邏輯)並將某些數據保存在DB中,然后從隊列中刪除消息。

微服務應每隔幾秒鍾檢查一次隊列,以監視是否有新消息。

我的問題是, 將提取數據,處理一些業務邏輯然后保存到數據庫的預期微服務什么? 是無國籍服務還是可靠演員

(編輯:解釋錯誤的問題較早)

我會說,選擇哪種型號是個人喜好問題。

您可以在所有節點上運行無狀態服務,以接收消息並在工作線程上對其進行處理。

由於單入口模型(限制多線程選項),Actor不能單手處理大量消息。 但是演員可以有很多。 您可以讓許多Actor收聽消息。 您需要確保那些演員成為並保持活着。


原始答案:

這個nuget包可以這樣做: https ://www.nuget.org/packages/ServiceFabric.ServiceBus.Services它支持隊列,主題,批處理和會話。

您的問題空間似乎適合有狀態或無狀態模型。 根據您是否需要維護狀態,哪種都可以。

作為一般指導,在以下情況下,請考慮使用參與者模式來為您的問題或場景建模:

  • 您的問題空間涉及大量(成千上萬個)小型,獨立且隔離的狀態和邏輯單元。
  • 您希望使用不需要與外部組件進行大量交互(包括查詢一組參與者的狀態)的單線程對象。
  • 您的actor實例不會通過發出I / O操作而以不可預測的延遲阻止調用者。

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

您可以使用任何一個。 無狀態或全狀態。 是應該沒關系的。 我認為您可以執行以下操作:

  1. 創建一個自定義偵聽器,說它是從ICommunicationListener派生的“ ServiceBusCommunicationListener”。 在ICommunicationListener的“公共任務OpenAsync(CancellationToken cancelleToken)”方法中,可以編寫代碼以訪問服務總線隊列。
  2. 對於讀取服務總線隊列,可以使用“ Microsoft.ServiceBus.Messaging.SubscriptionClient”並使用其“ OnMessageAsync”方法連續接收消息。
  3. 一旦有了這些,就可以在服務代碼中使用StatefulService的“ CreateServiceReplicaListeners”替代或StatelessService的“ CreateServiceInstanceListeners”。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM