2017-02-07 11 views
0

私は、redis pubsubチャネルをリッスンし、いくつかのイベントをDBに保持するマイクロサービスを作成しようとしています。マイクロサービスは、redis pubsubからイベントをハンドリングしています

私のテストケースでは、同じチャンネルを聴いているマイクロサービスの2つのインスタンスをスピンアップしています。

私が今直面していることは、両方のインスタンスが同時にDBを更新し、このアクションを防ぐ方法があるかどうかを知りたかったということです。

イベントごとに1つのインスタンスが更新を実行するように選択されますか?

答えて

2

メッセージングシステムには、pub-subqueueの2種類があります。 pub-subシステムでは、すべてのクライアントがすべてのイベントを処理し、queueシステムの場合は、各イベントが1つのクライアントのみで処理されます。 あなたが必要とするものはqueueで、pub-subではありません。

// producers push events into a queue 
RPUSH que event1 
RPUSH que event2 
// push other events... 

// consumers pop events from the queue 
BLPOP que timeout 

あなたは、単純なメッセージングqueueを実装するためのRedis LISTを使用することができ、これは、それはいくつかの信頼性の問題を抱えている、ませ完璧なソリューションです。しかし、Redisをベースとしたオープンソースのソリューションがいくつかありますが、あなたはその革新を再考する必要はありません。

関連する問題