簡體   English   中英

奧爾良無國籍工人

[英]Orleans StatelessWorkers

我發現很難找到有關StatelessWorkers使用的任何詳細文檔。

我想實現與此類似的東西。 正如文件中所建議的那樣,我需要使用無狀態工作者來處理一些消息並激活最終將持有該狀態的谷物。

我希望有一個調度程序粒度的多個實例處理“初始化”,因為這個粒子決不會處理任何狀態,並且消息不需要按順序排隊。

我是否需要將此顆粒標記為可重入? 或StatelessWorker(屬性)是否足夠?

關於激活,似乎我需要從IGrainWithIntegerKey (或類似的接口)繼承。 這意味着我需要激活谷物如下:

GrainClient.GrainFactory.GetGrain<IDispatcherActor>(0)

由於我總是使用0作為ID,谷物的多個實例仍然會被激活? 或者我是否需要創建不同的ID。 好像我不能稱之為如下:

GrainClient.GrainFactory.GetGrain<IDispatcherActor>()

即使我繼承了IGrain

簡答

您可以通過繼承IGrainWithIntegerKey並使用鍵0來創建無狀態工作程序。

答案很長

無國籍工人與普通農民一樣,但存在一些差異:

  1. 它們總是在本地激活(與呼叫者在同一個孤島中)。
  2. 如果對無狀態工作程序激活的調用建立,則可以創建多個激活。

它們受制於相同的停用語義。

無國籍工人有鑰匙可能會令人驚訝,但有幾個原因可能是鑰匙有用:

  1. 無國籍工人激活可能有不同的“口味”,這可能與他們的關鍵有關。
  2. 可以通過使用一系列密鑰對其進行處理來激活更大的無狀態工作者池。

但是如果這些功能對你沒用,那么約定是使用0的鍵。

  1. 它們只能從筒倉內部調用。

可以從客戶端調用StatelessWorker grain。 這實際上是客戶來電之前應該進行預處理的流行方案之一,然后才能將其路由到其他谷物進行實際處理。

暫無
暫無

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

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