apache / pulsar-client-node

Apache Pulsar NodeJS Client
https://pulsar.apache.org/
Apache License 2.0
148 stars 86 forks source link

[fix] Fixed an potential issue of examples/consumer_listener.js where clients were unintentionally disconnected #351

Closed kontotto closed 1 year ago

kontotto commented 1 year ago

This PR fixes an potential issue of examples/consumer_listener.js where client connections could be unintentionally disconnected.

Motivation

In the code below, which is a modified version of examples/consumer_listener.js, the connection is disconnected after a few seconds. I want to fix it.

const Pulsar = require('../');

(async () => {
  // Create a client
  const client = new Pulsar.Client({
    serviceUrl: 'pulsar://localhost:6650',
  });

  Pulsar.Client.setLogHandler((level, file, line, message) => {
        console.log('[%s][%s:%d] %s', level, file, line, message);
    });

  // Create a consumer with listener
  const consumer = await client.subscribe({
    topic: 'persistent://public/default/my-topic',
    subscription: 'sub1',
    subscriptionType: 'Shared',
    listener: (msg, msgConsumer) => {
      console.log(msg.getData().toString());
      msgConsumer.acknowledge(msg);
    },
  });
})();
[1][Client:90] Subscribing on Topic :persistent://public/default/my-topic
[1][ClientConnection:184] [<none> -> pulsar://localhost:6650] Create ClientConnection, timeout=10000
[1][ConnectionPool:106] Created connection for pulsar://localhost:6650
[1][ClientConnection:382] [127.0.0.1:52044 -> 127.0.0.1:6650] Connected to broker
[1][HandlerBase:72] [0x600000be2f88, sub1, 0] Getting connection from pool
[1][ConsumerImpl:282] [0x600000be2f88, sub1, 0] Created consumer on broker [127.0.0.1:52044 -> 127.0.0.1:6650]
[1][ClientConnection:1236] [127.0.0.1:52044 -> 127.0.0.1:6650] Connection disconnected

Modifications

Fixed to prevent client from being released

Verifying this change

(Please pick either of the following options)

This change is a trivial rework / code cleanup without any test coverage.

Documentation

shibd commented 1 year ago

In macOS build will be failed. I will handle this later.