Tengo una aplicación simple en nodejs donde intento crear una transacción en KafkaJS. Seguí los documentos y tengo mi cliente conectado y un productor transaccional creado con una identificación de transacción.
El problema es que cuando intento ejecutar el ejemplo de transacción en los documentos, aparece este error:
KafkaJSError: The producer is disconnected at validateConnectionStatus (/usr/local/apps/app/node_modules/kafkajs/src/producer/messageProducer.js:31:15)He buscado en línea pero no pude encontrar ningún problema relacionado. Estoy confundido por qué ocurre esto porque creo el productor de transacciones justo antes de usarlo. También estoy bastante seguro de que esto no es un problema con la conexión al corredor kafka de ninguna manera, ya que cuando creo un productor normal, envía el mensaje sin problemas.
Aquí está el código:
const client = new Kafka({ clientId: 'app-transactional-clienet', brokers: ['host.docker.internal:9092'], }) const producer = client.producer({ transactionalId: 'transaction.connectedservice.producer', maxInFlightRequests: 1, idempotent: true }) const transaction = await producer.transaction(); try { const connectedAccountMsg: ConnectedAcccountMsg = { userId: req.session.userId, accountId: profile.id, accountUsername: profile.username, accountType: 'twitter', authorized: true, }; await transaction.send({ topic: 'user.connectedaccount.status', messages: [{ value: JSON.stringify(connectedAccountMsg) }], }) await transaction.commit() return done(null, profile); } catch (error) { console.log(error) await transaction.abort() }