2016-12-12 7 views
1

Akkaストリームアプリケーションでは、アプリケーションがクラッシュしたりノードがダウンすると、機内メッセージを失う危険があります。Akkaストリーム:永続性キューまたはイベントソースの使用

私たちがメッセージを失わないように、またアプリケーションが戻ったときに再生されるようにするためにできることは何ですか?

私のアプリケーションでは、mapAsynsはIOコールとマイナーなCPUバインドタスクを実行します。

純粋なAkkaアプリケーションでは、永続的なキューまたはイベントソースのいずれかを使用します。しかし、Akkaストリームの場合、基になるキューにアクセスできないので、ストリーム内のメッセージが失われないようにするにはどうすればよいですか?

答えて

2

ストリームシンクをチェックポイントし、最後に成功したチェックポイントに基づいてソースがクラッシュした場合は、そのソースを再開する必要があります。チェックポイントを実行して、永続的なキューまたはイベントのソースを使用して再開することができます。

+0

ソースがリプレイをサポートしていない場合は、実際のソース(Rabbit MQやKinesisなど)からデータを取得して永続ストアにプッシュするカスタムビルドが必要になります。ソースをチェックポイントにリセットするために、ストリームを具体化しながらカスタムロジックも必要になります。これをより一般的なものにして、ストリームの中で最高の努力を一度に尽くして(私はベストエフォートが一回のデリバリーではないと知っていますが、おそらくあなたはそのアイデアを得るでしょう) – anindyaju99

+0

あなたのソースがトランザクションではない場合は、それを切り捨てる方法でトランザクションを構築する必要がありますか?読み込みをブロックするか、何らかの方法でそれを確認することができれば、ストリームで読み込み、永続的なアクタに書き込んだり、すべてが完了したらackをブロック解除するだけです。 – easel

関連する問題