> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pingoai.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Microservico de canais

> Como o channel-2 funciona e como conversa com backend e frontend.

## Papel do `channel-2`

O `channel-2` e o servico de integracoes e canais (WhatsApp/Baileys, Meta e fluxos de envio/recebimento), com suporte a:

* Processamento de eventos de mensagem.
* Envio de mensagens via handlers.
* Integracao por RabbitMQ com o backend.

## Dependencias de infraestrutura

* PostgreSQL
* Redis
* RabbitMQ
* MinIO (anexos)

## Como ele conversa com o backend

1. O backend solicita operacoes (ex.: consultar contato/foto) via filas RabbitMQ.
2. O channel consome e processa.
3. O channel publica eventos/notificacoes quando necessario.
4. O backend consome e atualiza estado/socket para o frontend.

Filas RPC principais nessa conversa:

* `check-contact-number-queue`
* `get-profile-picture-queue`
* `create-or-update-contact-queue`
* `notification-queue` (retorno para backend -> Socket.IO)

## Event bus no channel

O channel inicializa um EventBus RabbitMQ com:

* `RABBITMQ_URI`
* `RABBITMQ_QUEUE_NAME` (padrao local: `event-bus-queue`)

No deploy, essa fila e separada por servico (`channel-event-bus-queue`) para isolamento.

## Processamento e performance no channel

* Concorrencia do Event Bus: `5`.
* Transporte custom com retry + DLQ no `rabbitmq-transport.ts`.
* Publicacao com confirm em producers RPC/queue.
* Em alta carga, monitorar backlog de filas e tempo medio de resposta RPC.

## Subida local do channel

```bash theme={null}
cd channel-2
npm install
npm run db:migrate
npm run db:seed
npm run dev:server
```
