問題タブ [service-fabric-actor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - データを `OnActivateAsync()` に渡してステートフル アクターを初期化する方法は?
信頼できるステートフルなサービス アクターを作成しています。
質問:
アクター プロキシの作成中に初期化データを渡す方法はありますか ( ActorProxy.Create()
)? 基本的に、私のアクターのコンストラクターに相当します。
現在の考え:
これは、状態の初期化を担当するアクター メソッド呼び出しでプロキシ作成呼び出しをフォローアップすることで実現できます。
例えば
そのようなアプローチに対する私の懸念:
- この操作はアトミックではありません。アクターが一貫性のない状態になる可能性があります
- この初期化メソッドは、望ましくないアクターの存続期間を通じて利用できるようになりました。
c# - 起動時の Service Fabric スポーン アクター
起動時に特定のアクターを生成するようにシステムに要求する方法はありますか?
Program.cs
現在、アクターの登録後に必要なアクターのセットをアクティブにしています。
これは問題なく動作していReminderLoadInProgressException
ますが、アクティブ化されているアクターがリマインダーを登録する必要があるのに、それを実行しようとした時点ですべてのリマインダーが読み込まれているわけではないため、ときどきエラーが発生します。
クラスターをシードする標準的な方法はありますか?
c# - Service Fabric アクターのサービス依存性注入とアクター イベント
アクター サービスが起動したら、ドキュメント に記載されているイベントのいずれかに自動サブスクライブしたいと考えています。イベントを手動でサブスクライブすると機能します。ただし、サービスがインスタンス化されたときに、OnActivateAsync() のようにアクター サービスを自動サブスクライブする方法はありますか?
私がやろうとしていたのは、MyActor クラスのインスタンス化時に OnActivateAsync が呼び出してクライアントのイベントをサブスクライブするインターフェイスに渡す依存性注入によってこれを解決することでした。ただし、依存性注入に問題があります。
Microsoft.ServiceFabric.Actors.2.2.207 を使用すると、アクター サービスへの依存関係の挿入がサポートされるはずです。Microsoft.ServiceFabric.Actors.Runtime.Actor を実装すると、ActorService および ActorId 引数を使用して既定のコンストラクターが作成されます。
追加のインターフェイスが渡される独自のコンストラクターを追加したいと考えています。依存関係を追加するためにアクター サービスの登録をどのように記述しますか? デフォルトの Program.cs Main では、これを提供します
ただし、「() => new MyActor(myInjectedInterface)」と書かれている行では、エラーが表示されます
デリゲート 'Func' は 0 引数を取らない
Actor クラスのコンストラクターを見ると、次のようになっています。
MyActor.Cs
1) アクターの依存関係を解決しようとしたときに表示されるエラーを解決するにはどうすればよいですか?
デリゲート 'Func' は 0 引数を取らない
ボーナス質問:
ステートレス サービス (呼び出し側クライアント) によって呼び出されたときに、インターフェイス インスタンスの IMyInjectedInterface がアクター サービスに注入されるように解決するにはどうすればよいですか?
c# - 複数のインターフェイスを持つ信頼できるアクター?
2 つのインターフェイスを持つアクターを作成する方法はありますか? Interfaces アセンブリでパブリック インターフェイスを定義し、Actor アセンブリで内部インターフェイスを定義したいと考えています。その理由は、クライアントが使用するメソッドとシステムが使用するメソッドを分離するためです。
例えば:
ActorService 属性では単一の名前しか許可されていないため、これは不可能のようです。
パブリック メソッドと内部メソッドを分離するためのより良い方法 (機能する) はありますか?