2016-09-29 95 views
0

我已經建立了一個生產者春天雲流app和kafka作爲活頁夾。這裏是application.yml:春天雲流kafka

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

我有兩個實例(同一個應用程序運行在單個jvm上)作爲消費者。這裏是application.yml:

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

我卡夫卡組的理解是,消息將只進行一次消費,對於那些消費者在同一組。比方說,如果生產者應用程序生成消息A,B並且同一組中有兩個消費者應用程序,則消息1將讀取消息A,消費者2將讀取消息B,C.但是,我的消費者正在消費相同消息。我的假設錯了嗎?

+0

與消費者團體的想法是,該組內所有的消費者將消費從給定主題的所有事件。但是,如果消費者的數量多於該主題的分區數,那麼N個消費者(其中N是#consumers - #分區)將無所作爲。 – Arek

回答

0

我得到了解決方案,謝謝Arek。對於1個分區和1個消費者。 我在春雲流應用程序中共享生產者\消費者的解決方案。 監製:

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