code: func (b *Broker) Publish(ctx context.Context, signature *tasks.Signature) error {
  	// Adjust routing key (this decides which queue the message will be published to)
  	b.AdjustRoutingKey(signature)
  
  	msg, err := json.Marshal(signature)
  	if err != nil {
  		return fmt.Errorf("JSON marshal error: %s", err)
  	}
  
  	defaultQueue := b.GetConfig().DefaultQueue
  	topic := b.service.Topic(defaultQueue)
  	defer topic.Stop()
  
  	// Check the ETA signature field, if it is set and it is in the future,
  	// delay the task
  	if signature.ETA != nil {
  		now := time.Now().UTC()
  
  		if signature.ETA.After(now) {
  			topic.PublishSettings.DelayThreshold = signature.ETA.Sub(now)
  		}
  	}
  
  	result := topic.Publish(ctx, &pubsub.Message{
  		Data: msg,
  	})
  
  	id, err := result.Get(ctx)
  	if err != nil {
  		log.ERROR.Printf("Error when sending a message: %v", err)
  		return err
  	}
  
  	log.INFO.Printf("Sending a message successfully, server-generated message ID %v", id)
  	return nil
  }
docs: // Publish places a new message on the default queue