// Publish places a new message on the default queue func (amqpBroker *AMQPBroker) Publish(signature *signatures.TaskSignature) error { conn, channel, _, err := open(amqpBroker.config) if err != nil { return err } defer close(channel, conn) message, err := json.Marshal(signature) if err != nil { return fmt.Errorf("JSON Encode Message: %v", err) } signature.AdjustRoutingKey( amqpBroker.config.ExchangeType, amqpBroker.config.BindingKey, amqpBroker.config.DefaultQueue, ) return channel.Publish( amqpBroker.config.Exchange, // exchange signature.RoutingKey, // routing key false, // mandatory false, // immediate amqp.Publishing{ ContentType: "application/json", Body: message, DeliveryMode: amqp.Persistent, }, ) }
// Publish places a new message on the default queue func (amqpBroker *AMQPBroker) Publish(signature *signatures.TaskSignature) error { conn, channel, _, confirmsChan, err := amqpBroker.open() if err != nil { return err } defer amqpBroker.close(channel, conn) message, err := json.Marshal(signature) if err != nil { return fmt.Errorf("JSON Encode Message: %v", err) } signature.AdjustRoutingKey( amqpBroker.config.ExchangeType, amqpBroker.config.BindingKey, amqpBroker.config.DefaultQueue, ) if err := channel.Publish( amqpBroker.config.Exchange, // exchange signature.RoutingKey, // routing key false, // mandatory false, // immediate amqp.Publishing{ ContentType: "application/json", Body: message, DeliveryMode: amqp.Persistent, }, ); err != nil { return err } confirmed := <-confirmsChan if confirmed.Ack { return nil } return fmt.Errorf("Failed delivery of delivery tag: %v", confirmed.DeliveryTag) }