kafka-node: send enum key message (вместо string key)

Я использую kafka-node для создания сообщений из моего узла.JS web-сервер. My consumer-это еще одна серверная система (написанная на c++ с librdkafka ).

Интересно, как я могу отправить ключевое сообщение (с Kafka-node), где ключ int (enum), а не строка..

узел.код js (производитель):

var kafka = require('kafka-node'),
        Producer = kafka.Producer,
        KeyedMessage = kafka.KeyedMessage,
        client = new kafka.Client(),
        producer = new Producer(client),
        km = new KeyedMessage(1, (new MessageTypeSystemStatus({trace: [{ }] })).encode()),
        payloads = [
            { topic: 'Genesis', messages: km, partition: 0 }
        ];

C++ код (потребитель):

Message* msg = mConsumer->consume(mTopic, mPartition, -1);
*(msg->key_pointer());

1 ответ

  1. Просто держать его в курсе, если это может кому-то помочь..
    Я консультировался с обеими группами разработчиков библиотек:
    C++: librdkafka поддерживает все типы ключей (int/enum, а также) — вы можете увидеть эту проблему .

    JavaScript: kafka-node по-прежнему не поддерживает его, но это в их дорожной карте для 1.0.0, как вы можете видеть из этого вопроса .

    В настоящее время я работаю со строковым ключом из-за этого ограничения kafka — node-надеюсь, что они будут поддерживать и другие типы ключей в будущем.

    Спасибо всем!