{"id":24965005,"url":"https://github.com/jojowam/rabbitmq-docker-messagingsystem","last_synced_at":"2026-04-17T08:02:43.581Z","repository":{"id":181553957,"uuid":"666953781","full_name":"JoJowam/RabbitMQ-Docker-MessagingSystem","owner":"JoJowam","description":"Sistema de comunicação entre contêineres Docker usando RabbitMQ: produtor e consumidor assíncronos.","archived":false,"fork":false,"pushed_at":"2023-07-16T06:31:38.000Z","size":9,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-08T20:12:22.758Z","etag":null,"topics":["distributed-systems","docker","docker-compose","message-broker","message-queue","producer-consumer","python","rabbitmq"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JoJowam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-07-16T06:28:10.000Z","updated_at":"2023-07-16T06:37:22.000Z","dependencies_parsed_at":"2023-07-16T07:38:10.034Z","dependency_job_id":null,"html_url":"https://github.com/JoJowam/RabbitMQ-Docker-MessagingSystem","commit_stats":null,"previous_names":["jojowam/rabbitmq-docker-messagingsystem"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JoJowam/RabbitMQ-Docker-MessagingSystem","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoJowam%2FRabbitMQ-Docker-MessagingSystem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoJowam%2FRabbitMQ-Docker-MessagingSystem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoJowam%2FRabbitMQ-Docker-MessagingSystem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoJowam%2FRabbitMQ-Docker-MessagingSystem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JoJowam","download_url":"https://codeload.github.com/JoJowam/RabbitMQ-Docker-MessagingSystem/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoJowam%2FRabbitMQ-Docker-MessagingSystem/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31920518,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["distributed-systems","docker","docker-compose","message-broker","message-queue","producer-consumer","python","rabbitmq"],"created_at":"2025-02-03T10:19:06.605Z","updated_at":"2026-04-17T08:02:43.534Z","avatar_url":"https://github.com/JoJowam.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sistema de Mensagens entre Produtores e Consumidores com RabbitMQ no Ambiente Docker\n\nEste repositório oferece um exemplo prático de implementação de um sistema de troca de mensagens entre produtores e consumidores, usando o RabbitMQ como intermediário. Toda a configuração é feita em um ambiente Docker, proporcionando facilidade de uso e portabilidade.\n\nA implementação segue uma arquitetura de troca de mensagens baseada em filas. Os produtores são responsáveis por enviar mensagens para uma fila do RabbitMQ, enquanto os consumidores se conectam à fila e recebem as mensagens disponíveis. Cada entidade trabalha dentro de um conteiner docker e os mesmos comunicam-se atraves do RabbitMQ.\n\n___\n___\n___\n\n# Descrição\n\nO objetivo deste projeto é demonstrar como construir um sistema de comunicação assíncrona entre componentes, utilizando a biblioteca pika do Python para interagir com o RabbitMQ que é um poderoso sistema de mensagens que atua como intermediário para troca de informações entre diferentes partes de um sistema distribuído.\n\nNeste projeto, os produtores são responsáveis por enviar mensagens para o RabbitMQ, enquanto os consumidores aguardam e recebem as mensagens enviadas. Essa abordagem de mensagens em fila assíncronas é altamente eficiente e escalável, tornando-se uma solução ideal para sistemas distribuídos que exigem uma comunicação confiável entre seus componentes.\n\nA utilização do ambiente Docker simplifica consideravelmente a configuração e a execução do sistema. Com o Docker, podemos definir todos os serviços necessários em um arquivo docker-compose, garantindo que todas as dependências estejam configuradas corretamente.\n\n## Pré-requisitos\n\nAntes de prosseguir, é necessário ter o Docker instalado em sua máquina. Caso ainda não tenha, você pode fazer o download e a instalação do Docker a partir do site oficial: https://www.docker.com/\n\n___\n___\n___\n\n# Instalação e Uso\n\nApós clonar o repositório em sua máquina, você encontrará duas pastas:  [\"Dockerfiles\"](./Dockerfiles) e [\"src\"](./src). Essas pastas contêm os arquivos de configuração do ambiente Docker, incluindo as dependências necessárias, e também definem o funcionamento do sistema de mensagens.\n\nPara executar o sistema, não é necessário compilar os arquivos presentes nessas pastas. Basta subir os arquivos de composição (compose) disponíveis no diretório. Foram criadas duas versões: caso você queira modificar a lógica do sistema, utilize o arquivo [docker-compose-local](./docker-compose-local.yml) e, se necessário, modifique os arquivos .py para personalizar o comportamento da fila de mensagens. Por outro lado, se você deseja visualizar diretamente o funcionamento padrão do sistema, utilize o arquivo [docker-compose-dockerhub](./docker-compose-dockerhub.yml). Esse último irá executar o sistema com base nas imagens que foram enviadas para o DockerHub e que já possuem uma configuração pré-definida.\n\nVocê pode executar cada \"compose\" usando os comandos abaixo:\n\n```\ndocker-compose -f docker-compose-local.yml up\n\ndocker-compose -f docker-compose-dockerhub.yml up\n```\n\nApós realizar o comando \"docker-compose up\" para iniciar os contêineres, o sistema será inicializado e você poderá acompanhar as mensagens tanto no terminal quanto no painel de controle do RabbitMQ.\n\n___\n___\n___\n\n# Funcionamento\n\nCaso você tenha decidido utilizar as configurações fornecidas ou se preferir personalizá-las, aqui está uma explicação mais detalhada: Ao executar o comando mencionado acima, três contêineres serão iniciados. Um deles é responsável pelo produtor, outro pelo consumidor, e o terceiro é o contêiner do RabbitMQ, que atua como intermediário na troca de mensagens entre os outros dois.\n\nO produtor tem a função de gerar mensagens, cujo tamanho e intervalo de tempo são definidos no arquivo [produtor.py](./src/produtor.py). Ele se conecta ao mesmo canal em que o contêiner RabbitMQ está operando e envia as mensagens produzidas para uma fila específica, também configurada nesse arquivo.\n\nPor sua vez, o contêiner do consumidor é responsável por \"consumir\" as mensagens presentes na fila em que o produtor as envia. No arquivo [consumidor.py](./src/consumidor.py), há uma configuração básica onde o consumidor \"aguarda\" por alguns segundos, utilizando o comando ```time.sleep(2).``` Essa parte pode ser aprimorada com uma lógica mais sofisticada para o consumo das mensagens, como o reconhecimento \"acknowledgement\" das mesmas. No entanto, com o objetivo de demonstrar o funcionamento de um sistema de mensagens, não foi aprofundado nesse aspecto.\n\nPara acompanhar o funcionamento do sistema, basta acessar o painel de controle do RabbitMQ, o qual será aberto ao executar o compose. Para acessá-lo, utilize o link ```localhost/15672``` em seu navegador. Por meio desse painel, você poderá acompanhar tanto a produção quanto o consumo das mensagens. Caso esteja utilizando a versão do DockerHub, perceberá que as mensagens não são processadas automaticamente, já que desabilitei a opção ```auto_ack``` do consumidor, a qual realiza o processamento automático. Tal ajuste foi realizado com o intuito de facilitar a visualização do processo de produção das mensagens.\n\nCaso deseje modificar o comportamento do sistema, você pode editar os arquivos produtor.py e consumidor.py no diretório \"src\". Dentro desses arquivos, você pode ajustar os parâmetros, lógicas e tempos de espera de acordo com suas necessidades. Ao fazer alterações nos arquivos, é necessário reiniciar os contêineres para que as modificações sejam aplicadas.\n\n___\n___\n___\n\n# Licença\n\nEste projeto é licenciado sob a licença MIT - veja o arquivo LICENSE para mais detalhes.\n[MIT License](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjojowam%2Frabbitmq-docker-messagingsystem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjojowam%2Frabbitmq-docker-messagingsystem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjojowam%2Frabbitmq-docker-messagingsystem/lists"}