私は2つのサービスを持っています。どちらも同じチャンネルに登録する必要があります。
2つのサービスは負荷分散されています。各サービスは複数のサーバーで実行されます。
では、各サービスの1つのインスタンスだけがそのチャネルのメッセージを消費することをどのように確認できますか。
これはRedisでサポートされていますか?
ありがとう
Pubsubはそのようには機能しません。メッセージは、接続されているすべてのサブスクライブされたクライアントに送信されます。ただし、チャネルがリストの更新の通知になるように設定することもできます。そうすれば、すべてのクライアントがメッセージを受け取りますが、LPOPを使用してリストからアイテムを取得できるのは1つだけです。
別のアプローチは、サービスインスタンスからB*POP
を使用することです。リストに対してB*POP
を実行しているクライアントが多数ある場合、リストに対してLPUSH
すると、それらのクライアントの1つがデータを取得しますが、データは1つだけです。