Apache kafka 卡夫卡支持每记录抓取吗
截至2019年10月,卡夫卡v2.3.0版和Zookeeper v3.5.5版 场景: 考虑以下场景,消费者可以根据以下假设从主题中获取记录Apache kafka 卡夫卡支持每记录抓取吗,apache-kafka,Apache Kafka,截至2019年10月,卡夫卡v2.3.0版和Zookeeper v3.5.5版 场景: 考虑以下场景,消费者可以根据以下假设从主题中获取记录 Fetch的设计方式是,它可以在一次放炮中获取N记录,具体取决于每个的获取容量(以字节为单位)。这是以配置参数的形式实现和提供的,如max.partition.fetch.bytes Fetch的设计方式是,它可以根据每个记录数获取N个记录。因此,如果我将该参数设置为1,这意味着它将在每次获取尝试时获取1条记录。这就是卡夫卡现在缺少的东西。这可能是由于设计
max.partition.fetch.bytes
请在这方面指导我。非常感谢您。一个NPM包kafkajs支持并帮助您获取每个记录的机制,下面是实现这一点的示例代码
const { Kafka } = require('kafkajs')
const kafka = new Kafka({
clientId: 'my-app',
brokers: ['192.168.1.172:9092']
})
const consumer = kafka.consumer({ groupId: 'test-group' })
const run = async () => {
await consumer.connect()
await consumer.subscribe({ topic: 'test', fromBeginning: false })
await consumer.run({
eachMessage: async ({ topic, partition, message }) => {
console.log({
partition,
offset: message.offset,
value: message.value.toString(),
})
},
})
}
run().catch(console.error);
在上面的代码中,您有
eachMessage
方法来帮助我们实现这一机制一个NPM包kafkajs支持并帮助您使用获取每个记录机制,下面是实现这一机制的示例代码
const { Kafka } = require('kafkajs')
const kafka = new Kafka({
clientId: 'my-app',
brokers: ['192.168.1.172:9092']
})
const consumer = kafka.consumer({ groupId: 'test-group' })
const run = async () => {
await consumer.connect()
await consumer.subscribe({ topic: 'test', fromBeginning: false })
await consumer.run({
eachMessage: async ({ topic, partition, message }) => {
console.log({
partition,
offset: message.offset,
value: message.value.toString(),
})
},
})
}
run().catch(console.error);
在上面的代码中,您有
eachMessage
方法可以帮助我们实现此机制此属性应该可以帮助您做到记录数
此属性应该可以帮助您做到记录数