code: func (b *pubsubBroker) Publish(topic string, msg *broker.Message, opts ...broker.PublishOption) error {
  	t := b.client.Topic(topic)
  	ctx := context.Background()
  
  	exists, err := t.Exists(ctx)
  	if err != nil {
  		return err
  	}
  
  	if !exists {
  		tt, err := b.client.CreateTopic(ctx, topic)
  		if err != nil {
  			return err
  		}
  		t = tt
  	}
  
  	m := &pubsub.Message{
  		ID:         "m-" + uuid.New().String(),
  		Data:       msg.Body,
  		Attributes: msg.Header,
  	}
  
  	pr := t.Publish(ctx, m)
  	_, err = pr.Get(ctx)
  	return err
  }
docs: // Publish checks if the topic exists and then publishes via google pubsub