[英]Impossible to read Kafka message value
我正在使用一個簡單的生成器,以便在kafka中生成消息。 此消息是一個json對象。
這是我的生產者的代碼:
const kafka = require('kafka-node');
const Producer = kafka.Producer;
const KeyedMessage = kafka.KeyedMessage;
const Offset = kafka.Offset;
const Client = kafka.Client;
const p = 0;
const a = 0;
const topic = 'claims';
const client = new Client('192.168.99.100:2181');
const producer = new Producer(client, { requireAcks: 1 });
producer.on('error', function (err) {
done.fail(err);
});
producer.on('ready', function () {
const message = {status: 'Created', id_claims: '12345'};
producer.send([
{ topic: topic, partition: p, messages: message, attributes: a }
], function (err, result) {
expect(result).not.toBeNull();
expect(err).toBeNull();
done();
});
});
但是當我嘗試閱讀此消息的內容時,我總是得到
[對象對象]
這是我的消費者的代碼:
'use strict';
const util = require('util')
const kafka = require('kafka-node');
const Consumer = kafka.Consumer;
const Offset = kafka.Offset;
const Client = kafka.Client;
const topic = 'claims';
const client = new Client('192.168.99.100:2181');
const topics = [
{topic: topic, partition: 0}
];
const options = { autoCommit: false, fetchMaxWaitMs: 1000, fetchMaxBytes: 1024 * 1024 };
const consumer = new Consumer(client, topics, options);
const offset = new Offset(client);
consumer.on('message', function (message) {
console.log(JSON.stringify(message.value));
console.log("Value: %j", message.value);
console.log("Value: %o", message.value);
console.log('Value: ' + util.inspect(message.value, 10));
console.log(util.inspect(message.value, {showHidden: false, depth: null}));
});
consumer.on('error', function (err) {
console.log(err);
});
我在處理程序中嘗試的每個方法都返回相同的結果:[Object object]
問題在於下面顯示的代碼:
producer.send([
{ topic: topic, partition: p, messages: message, attributes: a }
], function (err, result) {
expect(result).not.toBeNull();
expect(err).toBeNull();
done();
});
從如下所示的文檔中,您不能為messages
提供object
。 向消息提供JSON.stringfy(message)
即可。
{
topic: 'topicName',
messages: ['message body'], // multi messages should be a array, single message can be just a string or a KeyedMessage instance
key: 'theKey', // string or buffer, only needed when using keyed partitioner
partition: 0, // default 0
attributes: 2, // default: 0
timestamp: Date.now() // <-- defaults to Date.now() (only available with kafka v0.10 and KafkaClient only)
}
您的生產者消息可能需要具有以下值:
JSON.stringify(message)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.