enviar mensagem para o tópico baseado em chave de mensagem usando fluxos kafka

Contagem:

Eu quero ser capaz de enviar todos os registros em um Kafkastream a um tema diferente com base na chave da chave de mensagem. Ex. Um fluxo em Kafka contém nome como chave e registro como valor. Quero espalham esses registros para tópico diferente com base na chave do registro

Dados: (jhon -> {jhonsRecord}), (sean -> {seansRecord}), (mary -> {marysRecord}), (jhon -> {jhonsRecord2}), esperado

  • Topic1: Nome: jhon -> (jhon -> {jhonsRecord}), (jhon -> {jhonsRecord2})
  • Topic2: sean-> (sean -> {seansRecord})
  • topic3: mary -> (mary -> {marysRecord})

Abaixo está a maneira que eu estou fazendo isso agora, mas desde que a lista de nomes é hudge isso é lento. Além disso, mesmo se há registros de alguns nomes, eu preciso percorrer a lista inteira Por favor sugerir uma correção

    for( String name : names )
    {
        recordsByName.filterNot(( k, v ) -> k.equalsIgnoreCase(name)).to(name);
    } 
Bartosz Wardziński:

Eu acho que você deve usar KStream::to(final TopicNameExtractor<K, V> topicExtractor)a função. Dá-lhe capacidade de nome calcular do tema para cada mensagem.

Código de amostra:

final KStream<String, String> stream = ???;
stream.to((key, value, recordContext) -> key);

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=316340&siteId=1
Recomendado
Clasificación