code: func (eagerBroker *Broker) Publish(ctx context.Context, task *tasks.Signature) error {
  	if eagerBroker.worker == nil {
  		return errors.New("worker is not assigned in eager-mode")
  	}
  
  	// faking the behavior to marshal input into json
  	// and unmarshal it back
  	message, err := json.Marshal(task)
  	if err != nil {
  		return fmt.Errorf("JSON marshal error: %s", err)
  	}
  
  	signature := new(tasks.Signature)
  	decoder := json.NewDecoder(bytes.NewReader(message))
  	decoder.UseNumber()
  	if err := decoder.Decode(signature); err != nil {
  		return fmt.Errorf("JSON unmarshal error: %s", err)
  	}
  
  	// blocking call to the task directly
  	return eagerBroker.worker.Process(signature)
  }
docs: // Publish places a new message on the default queue