Apache kafka 无法通过多个使用者从具有单个分区的单个主题读取事件
我是卡夫卡的新手,使用卡夫卡节点。我用卡夫卡进行实时数据处理。 该系统有一个生产者和多个消费者。如果一次运行任何一个消费者,我都可以接收数据,但是如果我运行两个消费者,只有其中一个会接收数据,而另一个消费者不会接收数据 卡夫卡制作人的代码为:Apache kafka 无法通过多个使用者从具有单个分区的单个主题读取事件,apache-kafka,Apache Kafka,我是卡夫卡的新手,使用卡夫卡节点。我用卡夫卡进行实时数据处理。 该系统有一个生产者和多个消费者。如果一次运行任何一个消费者,我都可以接收数据,但是如果我运行两个消费者,只有其中一个会接收数据,而另一个消费者不会接收数据 卡夫卡制作人的代码为: const config = require('../config'); const logger = require('./logger'); const kafka = require('kafka-node'), HighLevelProducer
const config = require('../config');
const logger = require('./logger');
const kafka = require('kafka-node'),
HighLevelProducer = kafka.HighLevelProducer,
client = new kafka.Client(`${config.kafka.host}:${config.kafka.port}`),
producer = new HighLevelProducer(client);
producer.on('ready', () => {
logger.info("Events producer to kafka is ready...");
});
producer.on('error', (err) => {
logger.error("Error while starting kafka producer:" + err.message);
});
const queueEvent = (event, callback) => {
const payloads = [
{ topic: config.kafka.queueName, messages: JSON.stringify(event, null,
2) },
];
producer.send(payloads, (err, data) => {
if (err) {
logger.error(`Error while producing data: ${err.message}`);
callback(err);
} else {
callback(null, data);
}
});
};
module.exports = {
queueEvent
};
为所有使用者完成的配置如下所示:
const kafka = require('kafka-node');
const logger = require('../common/logger');
const config = require('../common/config');
const eventDao = require('../models/event');
const _ = require('lodash');
const { getDeviceHierarchy } = require('../common/apiUtils');
const options = { autoCommit: true, fetchMaxWaitMs: 1000, fetchMaxBytes:
1024 * 1024 };
const HighLevelConsumer = kafka.HighLevelConsumer,
client = new kafka.Client(`${config.kafka.host}:${config.kafka.port}`),
consumer = new HighLevelConsumer(
client,
[
{ topic: config.kafka.queueName, partition: 0 }
],
options
);
我正在使用卡夫卡的docker图像,下面是我所做的设置
docker run-d-p 2181:2181-p 3030:3030-p 8081-8083:8081-8083-p 9581-9585:9581-9585-p 9092:9092-e ADV_HOST=localhost-e DISABLE=azure documentdb、区块链、bloomberg、cassandra、coap、druid、elastic、elastic 5、ftp、hazelcast、hbase、InfrifB、jms、kudu、mongodb、mqtt、redis、Reinsit、voltdb、yahoo、hdfs、jdbc、elasticsearch、s3、,twitter-e CONNECT_HEAP=6G-e RUNNING_SAMPLEDATA=0-e RUNTESTS=0 landoop/fast数据开发:最新**
请确认多个消费者场景中的消费者是否属于同一消费者组 如果确实如此,则观察到的行为是正确的。让我试着详细说明一下:
group.id
”属性的语句。请尝试在您的消费者代码/配置中设置此选项好吗
另外,您是否可以检查并确认您正在使用的卡夫卡版本,以及卡夫卡中的
consumer.properties
文件中是否有默认值?因为从版本0.9.0.0开始,group.id属性值被设置为强制值,如果不提供该属性值,则会引发错误(请选中此项) 谢谢。消费者属于同一消费群体。创建不同的消费群体解决了这个问题。但现在我面临另一个问题:@monika-Ok。如果这个问题解决了。你能承认/接受这个答案吗?:)(您也会从确认中受益:))然后为其他问题发布新问题,并提供指向该问题的链接?然后,我将尝试重现这些新问题并进行检查。