title: node-rdkafka producer isn't receiving a 'ready' event
body: <p>I'm trying to setup a producer to send messages, using node-rdkafka, to an Event Stream Service in IBM Cloud, however I've not been able to receive the 'ready' event back from the server.</p>
  
  <p>I've had a day trying to figure this out and I'm sure it's going to come down to my configuration of the Producer, but as far as I can tell I've got it right.</p>
  
  <p>I'm running this from a Ubuntu 19.04, using node-rdkafka to create the producer. I'm running this with Node 10.15.2</p>
  
  <p>Thanks for any suggestions you can give.</p>
  
  <pre><code>
  
  var Kafka = require('node-rdkafka');
  
  var producer = new Kafka.Producer({
      'debug' : 'all',
      'metadata.broker.list': 'kafka03-prod02.messagehub.services.eu-gb.bluemix.net:9093',
      'dr_cb': true, //delivery report callback
      'security.protocol': 'sasl_ssl',
      'ssl.ca.location': '/etc/ssl/certs/',
      'sasl.mechanisms': 'PLAIN',
      'sasl.username': '&lt;credential username&gt;',
      'sasl.password': '&lt;credential password&gt;',
      'retries': 10,
      'retry.backoff.ms': 10000
  });
  
  var topicName = '&lt;my-topic&gt;';
  
  //logging debug messages, if debug is enabled
  producer.on('event.log', function(log) {
      console.log(log);
  });
  
  //logging all errors
  producer.on('event.error', function(err) {
      console.error('Error from producer');
      console.error(err);
  });
  
  //counter to stop this sample after maxMessages are sent
  var counter = 0;
  var maxMessages = 10;
  
  producer.on('delivery-report', function(err, report) {
      console.log('delivery-report: ' + JSON.stringify(report));
      counter++;
  });
  
  //Wait for the ready event before producing
  producer.on('ready', function(arg) {
      console.log('producer ready.' + JSON.stringify(arg));
  
      for (var i = 0; i &lt; maxMessages; i++) {
          var value = Buffer.from('value-' +i);
          var key = "key-"+i;
          // if partition is set to -1, librdkafka will use the default partitioner
          var partition = -1;
          var headers = [
              { header: "header value" }
          ]
          producer.produce(topicName, partition, value, key, new Date(), "". headers);
      }
  
      //need to keep polling for a while to ensure the delivery reports are received
      var pollLoop = setInterval(function() {
          producer.poll();
          if (counter === maxMessages) {
              clearInterval(pollLoop);
              producer.disconnect();
          }
      }, 1000);
  
  });
  
  producer.on('disconnected', function(arg) {
      console.log('producer disconnected. ' + JSON.stringify(arg));
  });
  
  //starting the producer
  producer.connect();
  
  </code></pre>
  
  <p>I've included some of the log extracts below from where it looks like it's failing.</p>
  
  <pre><code>{ severity: 7,
    fac: 'BROKERFAIL',
    message:
     '[thrd:sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net]: sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net:9093/bootstrap: failed: err: Local: Broker handle destroyed: (errno: Operation now in progress)' }
  { severity: 7,
    fac: 'STATE',
    message:
     '[thrd:sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net]: sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net:9093/bootstrap: Broker changed state CONNECT -&gt; DOWN' }
  { severity: 7,
    fac: 'BROADCAST',
    message:
     '[thrd:sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net]: Broadcasting state change' }
  { severity: 7,
    fac: 'BUFQ',
    message:
     '[thrd:sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net]: sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net:9093/bootstrap: Purging bufq with 0 buffers' }
  { severity: 7,
    fac: 'BUFQ',
    message:
     '[thrd:sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net]: sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net:9093/bootstrap: Updating 0 buffers on connection reset' }
  { severity: 7,
    fac: 'TERM',
    message:
     '[thrd:sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net]: sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net:9093/bootstrap: Received TERMINATE op in state DOWN: 1 refcnts, 0 toppar(s), 0 active toppar(s), 0 outbufs, 0 waitresps, 0 retrybufs' }
  { severity: 7,
    fac: 'BROKERFAIL',
    message:
     '[thrd:sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net]: sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net:9093/bootstrap: failed: err: Local: Broker handle destroyed: (errno: Operation now in progress)' }
  { severity: 7,
    fac: 'FAIL',
    message:
     '[thrd:sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net]: sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net:9093/bootstrap: Client is terminating' }
  { severity: 7,
    fac: 'BUFQ',
    message:
     '[thrd:sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net]: sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net:9093/bootstrap: Purging bufq with 0 buffers' }
  { severity: 7,
    fac: 'BUFQ',
    message:
     '[thrd:sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net]: sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net:9093/bootstrap: Updating 0 buffers on connection reset' }
  { severity: 7,
    fac: 'TERMINATE',
    message:
     '[thrd::0/internal]: :0/internal: Handle is terminating in state DOWN: 1 refcnts (0x7f6d1402e4b0), 0 toppar(s), 0 active toppar(s), 0 outbufs, 0 waitresps, 0 retrybufs: failed 0 request(s) in retry+outbuf' }
  { severity: 7,
    fac: 'BROKERFAIL',
    message:
     '[thrd::0/internal]: :0/internal: failed: err: Local: Broker handle destroyed: (errno: Success)' }
  { severity: 7,
    fac: 'BUFQ',
    message:
     '[thrd::0/internal]: :0/internal: Purging bufq with 0 buffers' }
  { severity: 7,
    fac: 'BUFQ',
    message:
     '[thrd::0/internal]: :0/internal: Updating 0 buffers on connection reset' }
  
  Process finished with exit code 0
  
  </code></pre>