kafkajs
Version:
A modern Apache Kafka client for node.js
42 lines (37 loc) • 1.2 kB
JavaScript
const Encoder = require('../../../encoder')
const { OffsetCommit: apiKey } = require('../../apiKeys')
/**
* OffsetCommit Request (Version: 2) => group_id group_generation_id member_id retention_time [topics]
* group_id => STRING
* group_generation_id => INT32
* member_id => STRING
* retention_time => INT64
* topics => topic [partitions]
* topic => STRING
* partitions => partition offset metadata
* partition => INT32
* offset => INT64
* metadata => NULLABLE_STRING
*/
module.exports = ({ groupId, groupGenerationId, memberId, retentionTime, topics }) => ({
apiKey,
apiVersion: 2,
apiName: 'OffsetCommit',
encode: async () => {
return new Encoder()
.writeString(groupId)
.writeInt32(groupGenerationId)
.writeString(memberId)
.writeInt64(retentionTime)
.writeArray(topics.map(encodeTopic))
},
})
const encodeTopic = ({ topic, partitions }) => {
return new Encoder().writeString(topic).writeArray(partitions.map(encodePartition))
}
const encodePartition = ({ partition, offset, metadata = null }) => {
return new Encoder()
.writeInt32(partition)
.writeInt64(offset)
.writeString(metadata)
}