producer.go
func (p *Producer) Publish(message []byte) (err error) {
	return p.PublishTo(p.topic, message)
}
func (p *Producer) Publish(message []byte) (err error) {
	return p.PublishTo(p.topic, message)
}
// Publish sends a message using the producer p, returning an error if it was
// already closed or if an error occurred while publishing the message.
//
// Note that no retry is done internally, the producer will fail after the
// first unsuccessful attempt to publish the message. It is the responsibility
// of the caller to retry if necessary.