DEV Community

Mayron Ceccon
Mayron Ceccon

Posted on

6

Pub/Sub messaging

Publish/subscribe messaging ou pub/sub messaging, é uma forma de comunicação assíncrona service-to-service, utilizada em arquiteturas serverless e de micro-serviços.

O pub/sub permite uma comunicação segura e altamente disponível entre aplicativos criados de modo independente.

Em um modelo pub/sub, qualquer mensagem publicada para um tópico é imediatamente recebida por todos os subscribers deste tópico.

pub-sub

Conceitos

Mensagem: é a combinação de dados e atributos (opcionais) que um editor envia a um tópico e que é entregue aos assinantes.

Tópico: É um recurso nomeado para onde são enviadas as mensagens.

Publish: É quem envia a mensagem para um tópico.

Subscribe: É aquele que esta assinando determinada fila, e recebe as mensagens.

Na prática

Como exemplo criei um projeto, onde, tenho seis subscribers, que estão desenvolvidos em diferentes linguagens, Python, Go, Node, PHP. O publisher foi feito com Python.

Os subscribers estão "assinados" ao tópico topic_create_file.

A responsabilidade de cada subscriber é converter uma mensagem em JSON, para um outro tipo de arquivo, csv, html, xml, xls.

Pub/Sub

Ambiente utilizado

Versão
ubuntu 18.04
docker 19.03.9
docker-compose 1.25.4
python 3.8.3
php 7.4.6
node 12.16.3
npm 6.14.4
go 1.14.3

Redis

docker-compose up --build

Instalação

Python

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Node

npm install

Go

go get github.com/gomodule/redigo/redis

PHP

composer install

Execução dos Subscribes

Python

python subscribes/service_csv.py
python subscribes/service_excel.py
python subscribes/service_html.py

Node

node subscribes/service_xml.js

Go

go run subscribes/service_csv.go

PHP

php subscribes/service_csv.php

Execução do Publisher

python publisher.py



Referências

https://cloud.google.com/pubsub/docs/overview?hl=pt-br
https://aws.amazon.com/pub-sub-messaging/

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay