Carpincho MQ surge de la necesidad de reflejar los conceptos estudiados en la materia Arquitecturas Concurrentes de la Facultad Tecnologica Nacional Argentina (UTN)
Para ello se desarrollo una solucion software de administracion de colas de mensajes distribuida, con dos modos de trabajo:
Por otro lado, los receptores de la cola de mensajes podrán optar por dos modalidades de consumo:
Consumo no Transaccional: CarpinchoMQ coinsidera que fue un consumo exitoso del mensaje sin esperar la confirmacion por parte del receptor que lo proceso completo (se envia el ACK al principio del procesamiento del mensaje)
Consumo transaccional: CarpinchoMQ coinsidera que fue un consumo exitoso del mensaje tras la confirmacion por parte del receptor que lo proceso completo (se envia el ACK luego de haber completado el procesamiento del mensaje).
Si el receptor no envia la confirmacion en determinado tiempo, por timeout se coinsidera que el consumo fallo.
En este caso Carpincho hara lo siguiente:
CarpinchoMQ nacio gracias a:
Debemos tener instalado:
mix deps.get
Para utilizar CarpinchoMQ debes levantar lineas de comando. A continuacion te pasamos los comandos:
Levantar un nodo nuevo en una consola (para tirarlo abajo Ctrl+C):
iex --sname <nombre_nodo> --cookie <nombre_cookie> -S mix run ./lib/app.ex <puertohttp> <puertoudp>
iex --sname a --cookie cookie -S mix run ./lib/app.ex 3333 8000
Producer.new_queue <nombre_cola>, <tamaño_maximo>, <modo_de_trabajo>, <modo_de_transaccionalidad>
Ejemplo:
Producer.new_queue :cola1, 23, PubSub, :transactional
Producer.push_message <nombre_cola>, <mensaje>
direccion
y un puerto
udp al que esta escuchandoconsumer = %{address: <direccion>, port: <puerto>}
Consumer.subscribe <nombre_cola>, consumer
Consumer.unsubscribe <nombre_cola>, consumer
Queue.state <nombre_cola>
Queue.alive? <nombre_cola>
4 Contenedores:
Prerequisitos:
Tener instalado docker en tu pc.
Tener la imagen generada de carpinchomq. Si no la tenes generada, en este proyecto (estando parado en el path principal):
docker build -t carpincho-mq-image ./
Tener la imagen generada de carpinchomq-front. Si no la tenes generada, en el proyecto de carpincho-mq-frontend (estando parado en el path principal):
docker build -t carpincho-mq-front-image ./
Una vez generada las imagenes, estando parado en la raiz del proyecto:
docker-compose up
Ayudanos a crecer con tu codigo siguiendo los siguientes pasos
git checkout -b feature/AmazingFeature
)git commit -m 'Add some AmazingFeature'
)git push origin feature/AmazingFeature
)Distributed under the UTN License. See LICENSE.txt
for more information.
Agradecemos a los profesores y ayudantes de la materia "Implementación de Arquitecturas de Software Concurrentes"