# README

mq

Este paquete exporta algunas apis para sacar y poner de las colas de MQ y para publicar. Para hacerlo no usa el protocolo de IBM/MQ si no que llama a http-mq-bridge.

import "github.com/architecture-it/go-platform/mq"
import "context"

func main() {

    //ReadConfigFromEnv() lee del environment HTTP_MQ_API_URL y QUEUE_NAME
    //Tambien se puede leer la config del Vault usando ReadConfigFromVault().
    q := mq.GetQueue(mq.ReadConfigFromEnv()) 

    err := q.Put("Hola")

    ctx,cancel := context.WithTimeout(context.Background(),1*time.Second)
    defer cancel()
    //Listen() ejecuta la goroutine del closure cada vez que llega un mensaje hasta que el contexto (ctx) se cancele.
    q.Listen(ctx,func(what string) {
        //en what deberia venir "Hola"
    })
    <-ctx.Done()

    topic := mq.GetTopic("topic/subtopic",mq.ReadConfigFromEnv())
    err = topic.Publish("mensaje")
}

Roadmap

Ver si mejor no leer la configracion de forma global:

mq.ReadConfigFromEnv()
mq.ReadConfigFromVault()

Y luego cambian las apis a:

q:= mq.GetQueue("miQueue")
q.Put("mensaje")
t:=mq.GetTopic("untopic/otro")
t.Publish("un mensaje")

# Functions

GetQueue obtiene una cola determinada por la config especificada.
GetTopic obtiene un topic para publicar.
ReadConfigFromEnv lee la config de las var de entorno$HTTP_MQ_API_URL: el url a httpmqbridge, $QUEUE_NAME: la cola donde se quiere sacar y poner.
ReadConfigFromVault lee la config desde el ConfigVault.

# Constants

No description provided by the author
No description provided by the author

# Structs

No description provided by the author
Queue representa el objeto Queue de MQ.
Topic representa al objeto Topic de MQ.