2016-09-29 3 views
0

Я создал продюсер весеннее облако поток приложение и kafka в качестве связующего. Вот приложение.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 и есть два приложения-потребителя в одной группе, сообщение A будет прочитано потребителем 1, а сообщения B, C будут прочитаны потребителем 2. Однако мои потребители потребляют одни и те же Сообщения. Ошибочны ли мои предположения?

+0

Идея с группами потребителей является то, что все потребители в рамках этой группы будут потреблять все события из данной темы. Однако, если для этой темы больше потребителей, чем разделов, то N потребителей (где N является «#consumers - # partitionitions») ничего не делает. – 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