code: func (plugin *ExamplePlugin) producer() {
  	// Wait for the both event handlers to initialize
  	time.Sleep(2 * time.Second)
  
  	// Synchronous message with protobuf-encoded data.
  	enc := &etcdexample.EtcdExample{
  		StringVal: "value",
  		Uint32Val: uint32(0),
  		BoolVal:   true,
  	}
  	plugin.Log.Info("Sending Kafka notification (protobuf)")
  
  	// Send several sync messages with offsets offsetLast+1, offsetLast+2,...
  	plugin.Log.Infof("Sending %v sync Kafka notifications (protobuf) ...", messageCountNum)
  	for i := 0; i < messageCountNum; i++ {
  		err := plugin.kafkaSyncPublisher.Put("proto-key", enc)
  		if err != nil {
  			plugin.Log.Errorf("Failed to sync-send a proto message, error %v", err)
  		}
  	}
  
  	// Send message with protobuf encoded data asynchronously.
  	// Delivery status is propagated back to the application through
  	// the configured pair of channels - one for the success events and one for
  	// the errors.
  	plugin.Log.Infof("Sending %v async Kafka notifications (protobuf) ...", messageCountNum)
  	for i := 0; i < messageCountNum; i++ {
  		err := plugin.kafkaAsyncPublisher.Put("async-proto-key", enc)
  		if err != nil {
  			plugin.Log.Errorf("Failed to async-send a proto message, error %v", err)
  		}
  	}
  
  	// Mark that all messages were sent
  	plugin.messagesSent = true
  }
docs: /***********************
   * Kafka Example calls *
   ***********************/
  // Send Kafka notifications