kafka-ts
Version:
**KafkaTS** is a Apache Kafka client library for Node.js. It provides both a low-level API for communicating directly with the Apache Kafka cluster and high-level APIs for publishing and subscribing to Kafka topics.
99 lines (96 loc) • 3.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FIND_COORDINATOR = exports.KEY_TYPE = void 0;
const api_1 = require("../utils/api");
const error_1 = require("../utils/error");
exports.KEY_TYPE = {
GROUP: 0,
TRANSACTION: 1,
};
/*
FindCoordinator Request (Version: 3) => key key_type _tagged_fields
key => COMPACT_STRING
key_type => INT8
FindCoordinator Response (Version: 3) => throttle_time_ms error_code error_message node_id host port _tagged_fields
throttle_time_ms => INT32
error_code => INT16
error_message => COMPACT_NULLABLE_STRING
node_id => INT32
host => COMPACT_STRING
port => INT32
*/
const FIND_COORDINATOR_V3 = (0, api_1.createApi)({
apiKey: 10,
apiVersion: 3,
requestHeaderVersion: 2,
responseHeaderVersion: 1,
request: (encoder, data) => encoder
.writeCompactString(data.keys[0])
.writeInt8(data.keyType)
.writeTagBuffer(),
response: (decoder) => {
const result = {
throttleTimeMs: decoder.readInt32(),
coordinators: [
{
key: '',
errorCode: decoder.readInt16(),
errorMessage: decoder.readCompactString(),
nodeId: decoder.readInt32(),
host: decoder.readCompactString(),
port: decoder.readInt32(),
tags: {},
},
],
tags: decoder.readTagBuffer(),
};
if (result.coordinators[0].errorCode)
throw new error_1.KafkaTSApiError(result.coordinators[0].errorCode, result.coordinators[0].errorMessage, result);
return result;
},
});
/*
FindCoordinator Request (Version: 4) => key_type [coordinator_keys] _tagged_fields
key_type => INT8
coordinator_keys => COMPACT_STRING
FindCoordinator Response (Version: 4) => throttle_time_ms [coordinators] _tagged_fields
throttle_time_ms => INT32
coordinators => key node_id host port error_code error_message _tagged_fields
key => COMPACT_STRING
node_id => INT32
host => COMPACT_STRING
port => INT32
error_code => INT16
error_message => COMPACT_NULLABLE_STRING
*/
exports.FIND_COORDINATOR = (0, api_1.createApi)({
apiKey: 10,
apiVersion: 4,
fallback: FIND_COORDINATOR_V3,
requestHeaderVersion: 2,
responseHeaderVersion: 1,
request: (encoder, data) => encoder
.writeInt8(data.keyType)
.writeCompactArray(data.keys, (encoder, key) => encoder.writeCompactString(key))
.writeTagBuffer(),
response: (decoder) => {
const result = {
throttleTimeMs: decoder.readInt32(),
coordinators: decoder.readCompactArray((decoder) => ({
key: decoder.readCompactString(),
nodeId: decoder.readInt32(),
host: decoder.readCompactString(),
port: decoder.readInt32(),
errorCode: decoder.readInt16(),
errorMessage: decoder.readCompactString(),
tags: decoder.readTagBuffer(),
})),
tags: decoder.readTagBuffer(),
};
result.coordinators.forEach((coordinator) => {
if (coordinator.errorCode)
throw new error_1.KafkaTSApiError(coordinator.errorCode, coordinator.errorMessage, result);
});
return result;
},
});