2017-08-28 12 views
0

は、このような状況を考えてみましょう:春と異なるノード上の統合を点火

Springアプリケーションは、いくつかのIgniteクラスタに参加Igniteノードを開始します。このノードでは、@SpringResourceが挿入されたシングルトンサービスを開始します(igniteのドキュメントによれば、この変数はtransientとマークする必要があります)。今度はこのノードはダウンし、サービスのコピーはSpringについて何も知らない別のIgniteノードに復元されます。

質問:この復元されたサービスにspring beanを挿入するにはどうすればいいですか?

Thanx。

答えて

0

Beanをサービスのコンストラクタに渡して、非一時的フィールドに記録することができます。このBeanは直列化可能であり、Spring関連(2番目のノードのクラスパスにSpringがない場合は注釈を含む)に依存しないことを確認する必要があります。そうしないと、Igniteはサービスをデプロイできず、別のノードにデシリアライズすることができません。

+0

thx、私はそれを考えました。しかし、私は、そのようなタスクのためのいくつかの内部的な発火メカニズムがあることを望んだ。それは、春のアプリケーションを発見し、そこからBeanを要求するプロキシのようなものだろうか? – vk23

+1

@NoMercy Springを持つノードにサービスを強制的にデプロイすることができます。 ServiceConfiguration#setNodeFilterを使用してノードフィルタを指定し、そのフィルタの状態を確認できます。たとえば、すべてのスプリングノードの名前に特定の文字列を接頭辞として付けることができます。これは次のようになります。 cfg.setNodeFilter(ignite.cluster()。forPredicate(/ *あなたの述語* /)述語()); この場合、SpringResourceアノテーションはサービスのすべてのインスタンスに対して機能します。 – Denis

関連する問題