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 }