私の Producer application.properties には、
spring.cloud.stream.bindings.output.producer.partitionKeyExpression=payload
spring.cloud.stream.bindings.output.producer.partitionCount=4
そして、私のコンシューマーapplication.propertiesは次のようになります
spring.cloud.stream.bindings.input.consumer.partitioned=true
spring.cloud.stream.bindings.input.group=group01
アプリを Pivotal Cloud Foundry にデプロイし、アプリを 2 つのインスタンスにスケーリングすると、2 つのキューが作成されることがわかります。それらは、接尾辞 -0 および -1 で交換にバインドされます。
ただし、これは、メッセージに -3 または -4 で終わるトピックが含まれている場合、それらのトピックにはバインディングが存在しないため、メッセージが失われることを意味します。コンシューマーを 4 つのインスタンスにスケーリングすると、期待どおりに動作します。
私の質問は、コンシューマー インスタンスをプロデューサーの partitionCount より少なくすることはできないのでしょうか? この場合、1 つまたは複数のキューに、交換への複数のバインディングがあります。