github.com/mundipagg/boleto-api@v0.0.0-20230620145841-3f9ec742599f/queue/publisher.go (about)

     1  package queue
     2  
     3  import (
     4  	"github.com/streadway/amqp"
     5  )
     6  
     7  //PublisherInterface Interface do Publicador
     8  type PublisherInterface interface {
     9  	GetExchangeName() string
    10  	GetQueueName() string
    11  	GetRoutingKey() string
    12  	GetMessageToPublish() []byte
    13  }
    14  
    15  //WriteMessage Publica um messagem na fila
    16  func WriteMessage(queuePublisher PublisherInterface) bool {
    17  
    18  	var channel *amqp.Channel
    19  	var queue amqp.Queue
    20  
    21  	err := OpenConnection()
    22  	if err != nil {
    23  		failOnError(err, "Error to open connection with RabbitMQ", "OpenConnection")
    24  		return false
    25  	}
    26  
    27  	channel, err = openChannel(GetConnection(), "WriteMessage")
    28  	if err != nil {
    29  		return false
    30  	}
    31  
    32  	defer closeConnection(GetConnection(), "WriteMessage")
    33  	defer closeChannel(channel, "WriteMessage")
    34  
    35  	if exchangeDeclare(channel, queuePublisher.GetExchangeName(), "topic") &&
    36  		queueDeclare(channel, queue, queuePublisher.GetQueueName()) &&
    37  		queueBinding(channel, queuePublisher.GetQueueName(), queuePublisher.GetExchangeName(), queuePublisher.GetRoutingKey()) {
    38  		return writeMessage(channel, queuePublisher) == nil
    39  	}
    40  	return false
    41  }