2016-09-29 7 views
0

私はバインダーとしてプロデューサーの春の雲ストリームアプリとカフカを構築しました。ここにapplication.ymlがあります:春の雲ストリームkafka

spring: 
cloud: 
    stream: 
    instanceCount : 1 
    bindings: 
     output: 
     destination: topic-sink 
     producer: 
      partitionSelectorClass: com.partition.CustomPartition 
      partitionCount: 1   
... 

私は消費者として2つのインスタンス(同じアプリケーションが1つのjvmで動作しています)を持っています。ここでapplication.ymlは次のとおりです。

spring: 
cloud: 
    stream: 
    bindings: 
     input: 
     destination: topic-sink 
     group: hdfs-sink 
     consumer: 
      partitioned: true 
... 

カフカグループの私の理解では、メッセージが同じグループのものを消費者のために、一度だけ消費されるということです。たとえば、プロデューサアプリケーションがメッセージA、Bを生成し、同じグループに2つのコンシューマアプリケーションがある場合、メッセージAはコンシューマ1によって読み上げられ、メッセージB、Cはコンシューマ2によって読み込まれます。ただし、メッセージ。私の仮定は間違っていますか?

+0

アイデアは、そのグループ内のすべての消費者が特定のトピックからすべてのイベントを消費するということです。しかし、そのトピックのパーティションより多くのコンシューマーが存在する場合、N個のコンシューマー(Nは '#consumers - #partitions')は何もしません。 – Arek

答えて

0

私は解決策を得ました、ありがとうございます。 1パーティションと1消費者用。 私はspringクラウドストリームアプリでproducer \ consumerのソリューションを共有します。 プロデューサー:

spring: cloud: stream: instanceCount : 1 bindings: output: destination: topic-sink producer: partitionSelectorClass: com.partition.CustomPartition partitionCount: 1
消費:消費者団体との

spring: cloud: stream: instanceIndex: 0 #between 0 and instanceCount - 1 instanceCount: 1 bindings: input: destination: topic-sink group: hdfs-sink consumer: partitioned: true
kafka: binder: autoAddPartitions: true

関連する問題