GH GambleHub

Mensagem Broker e Rotinagem de eventos

(Secção Tecnologia e Infraestrutura)

Resumo curto

O Mensagem Broker é uma camada fundamental de integração e pneu de evento no iGaming. Ele faz entregas, tampões e roteiros de mensagens entre chips de apostas, pagamentos, antifrode, KYC, CRM e analistas. Trocadores bem projetados (exchanges), filas, chaves de roteamento e regras de reaproveitamento oferecem baixo atraso, resistência a saltos de tráfego e SLO previsíveis.

O papel do corretor na plataforma iGaming

Dekupling serviços: publicação de eventos em vez de chamadas sincronizadas severas.
Rotação flexível: um ivent → muitos consumidores (CRM, risco, analista).
Gerenciamento de carga: filas, prefetch/QoS, backpreser.
Confiabilidade e recuperação: confirmação, retraí, DLQ, replicação.
Auditoria e compilação: rastreamento de eventos, camuflagem PII, política de armazenamento.

Modelos de mensagens

Point-to-Point (fila de tarefas): Um consumidor está processando uma tarefa (KYC, e-mail, PSP webhook).
Pub/Sub (eventos de domínio): publicação em um trocador com fã-out em várias filas.
RPC via corretor: consulta/resposta com correlação (raramente em caminhos «quentes», mas útil para as integrações).

Conceitos de routagem (clássico AMQP)

Exchanges e bindings determinam a fila da mensagem:

1. direto é a coincidência exata de 'routing _ key'.

2. topic - modelos 'a. b. c's "(uma palavra) e" # "(0 + palavras). Escolha universal.

3. fanout - transmissível a todas as filas relacionadas.

4. headers - rotação por cabeçalho (chave/valor), útil para políticas complexas.

Exemplos de chaves e topologias:
  • `payments. psp. stripe. succeeded`, `payments. psp..failed`, `bets. live. #`, `rg. limit. breach`.
  • Os trocadores de domínios são 'payments. topic`, `bets. topic`, `risk. topic`; individuais - para eventos do sistema 'platford. audit`.
Recomendações:
Normalize o esquema de chaves 'domain. subdomain. verb. status` (snakedot case - uniforme).
Reduza a conectividade - um trocador → muitas filas, não «muitos trocadores» sem necessidade.
Para a multi-tenência: vhost/namespace por cliente, prefixados por chave: 'tenantX. payments. psp…`.

Filas e políticas

Fila de trabalho consumida por hendler de negócios.
Filas Retry: com TTL (delay) e DLX para backes exponenciais (por exemplo, '5s → 1m → 5m → 1h').
DLQ (Dead-Letter Queue): «lixeira» final após o esgotamento dos retais.
Priorities: para tarefas urgentes (conclusões> cartas).
Lazy/Quorum: lazy - economia de RAM com backlogs maiores; quorum - HA por consenso.

Mini-políticas (conceito):
  • `work. q` → `x-dead-letter-exchange=retry. ex`
  • `retry. 1m. q` → `x-message-ttl=60000`, `x-dead-letter-exchange=work. ex`
  • `dlq. q 'monitoramento e remissão manual

Garantias de entrega e ordem

At-least-once é um default, pode ser duplicado → a idempotação é obrigatória.
At-matt-once é um atraso mínimo, mas risco de perda (para sinais «não críticos»).
Exactly-once - raramente prático em corretores; É mais difícil e mais caro. Para o dinheiro: at-least-once + idempotidade severa.

Ordem:
  • Uma fila e um único consumidor mantêm a ordem; com o paralelismo + retais, a ordem pode ser perturbada.
  • Para as entidades que exigem ordem - Serigrafe o fluxo (single-ativo consumer por chave) ou transfira para os pneus de limpeza.

Idempotidade e publicação transacional

Idempotency-Key em mensagem (ULID/UUID), armazenamento com TTL ou upsert à chave.
Outbox-pattern: gravação de evento na tabela 'outbox' como parte de uma transação de negócios, o conector publica no corretor → exclui 'duplo registro '/perda.
Metadados correlacionados: 'mensagem _ id', 'trace _ id', 'demandation _ id', 'tenant _ id'.

RPC via corretor (quando necessário)

A consulta é publicada com 'reply _ to' e 'correlation _ id' e a resposta é a fila especificada.
Usar restrito (provedores externos, verificações sincronizadas), controlar temporizações e tendência de bate-papo (senão, degradação em monólito distribuído).
Os caminhos mais quentes do usuário preferem eventos asinhrônicos + projeções de estado.

Contratos de dados e esquema

Formatos: Avro/Protobuf/JSON-Schema. Para JSON - fixe a versionização e os campos obrigatórios.
Política de evolução: alterações backward-compatível; não são permitidas alterações quebrantes sem migração.
PII - toquenização/criptografia de campos; destino (purpose) e prazo de armazenamento.

Processamento de erros, retraí, DLQ

Classificação: tempo (rede/5xx) → retraí; fatais (validação/esquema) → DLQ.
Exponential backoff + jitter, limitação do número de tentativas, rótulos de "poison-pill'.
Entrega adiada por TTL/Delayed-exchange.
A ferramenta «Reinhexo para o Trabalho» do DLQ depois do fixo de causa.

Observabilidade e SLO

Métricas do multiplicador: velocidade de publicação, erros/confirmação.
Métricas de fila: comprimento, velocidade de consumo, porcentagem de retais, p99 horas na fila.
Consoantes: lag, throughput, tempo de processamento, parte NACK.
SLO: p99 E2E latência de entrega do evento ≤ X segundos; disponibilidade ≥ 99. 9%; DLQ-rate ≤ Y%.
Tracing: «trace _ id »/' span _ id ', logs por' mensagem _ id '.
Alerts: crescimento de DLQ/laje, queda de quórum, aumento de NACK, «derramamento» de estágios retry.

Segurança e acessibilidade

TLS/MTLS em trânsito; criptografia em disco armazenando filas persistentes.
RBAC/ACL: permissões para publish/consume por vhost/namespace/topic.
Segmentação: domínios sensíveis (pagamentos/CUS) - câmbio/cluster individuais.
Segredos em Vault/SOPS; auditoria-logos de publicações/assinaturas.
Localização de dados: armazenamento e retenção por região (UE, Turquia, LatAm).

Alta disponibilidade e DR

Filas quórum/replicação, número ímpar de nodes, anti-afinidade por AZ.
Replicação interregional (federation/shovel) para domínios críticos.
Regulamentos de mudança (runbook), exercícios DR periódicos (game day).
Versionização de topologia como código (IaC) - Deplois repetíveis e resinco rápido.

Desempenho e sintonização

Prover: confirmação de batch (publisher conferms), reutilização de canais, publicações assíncronas.
Filas: prefetch para duração média da tarefa; lazy para backlogs profundos; Espalhar filas quentes por nodes.
Rede/OS: 10/25G, arquivos descriptors, sintonização TCP. JVM/GC - sob um perfil de carga.
Testes de carga burst (jogos, torneios, pagamentos de pico).

Pattern típicos de routing para iGaming

1. Eventos de pagamento (topic):

Exchange: `payments. topic`

Keys:
  • `payments. psp. stripe. succeeded`
  • `payments. psp..failed`
  • `withdrawal. requested. #`
Filas consumidoras:
  • `ledger. writer. q '(bind:' payments. #`)
  • `crm. triggers. q '(bind:' payments... suceeded ')
  • `risk. reviews. q '(bind:' withdrawal. #`)

2. Mapeamento antifrod (direto + retry):

`risk. work. q` ← `risk. direct` (`routing_key=risk. check`)

`risk. retry. 1m. q '(TTL 60s → DLX de volta para' risk. direct`)

`risk. dlq. q 'para os fatais.

3. Notificações (fanout + prioridade):

`notify. fanout` → `email. q (prio)`, `sms. q`, `push. q`

As prioridades são as conclusões/limites acima das cartas de marketing.

4. Auditoria e rastreamento (headers):

Bindings de cabeçalho 'a." tenant': 'X', 'critical': 'true' a.' → uma fila de auditoria separada.

Exemplo de padrão mínimo de mensagem (JSON)

json
{
"message_id": "01HX8H8Y6D6W0T1S2A3B4C5D6E",
"trace_id": "f4d2a1...e9",
"occurred_at": "2025-11-05T11:20:45. 321Z",
"tenant_id": "eu-1",
"schema_version": 3,
"event": "payments. psp. stripe. succeeded",
"payload": {
"payment_id": "pay_123",
"player_id": "p_987",
"amount": { "currency": "EUR", "value": 50. 00 },
"psp_tx": "tx_456",
"idempotency_key": "ulid_..."
}
}

Integração com outros caminhos

Streaming/analista: tópicos importantes podem ser duplicados em um pneu de linhagem (Kafka/Redpanda) para retenha e reprocessing.
Fichestor: eventos → fichas online (Redis) e partituras offline (Parquet/OLAP).
Saga-orquestração: Comandos por direto/topic, eventos por pub/sub; os passos compensadores são como mensagens individuais.

Folha de cheque de implementação

1. Defina os trocadores de domínio e o padrão de chaves de rotação.
2. Projete work/retry/DLQ para cada fluxo crítico.
3. Ative publisher conferms, 'prefetch', prioridades e delay onde desejar.
4. Digite idempotency-key, outbox e ID de correlação.
5. Aprove os esquemas de dados e as regras de evolução.
6. Configure o TLS/RBAC, segmentação por domínios/tenentes.
7. Defina SLO e alertas (lag, DLQ-rate, p99).
8. Prepare um plano DR. e topologias IaC automatizadas.
9. Faça testes de carga e chaos.
10. Documente o runbook para incidentes e ré-inject do DLQ.

Antipattern

Um trocador «gigante» sem disciplina de chaves; bindings aleatórios como for preciso.
Falta de retry/DLQ e mistura de erros temporários/fatais.
RPC sincronizado acima do corretor nos caminhos quentes do usuário.
Falta de Idempotação e outbox → dupla/perda de dinheiro.
Armazenamento do PII em aberto, compartilhamento publish/consume para todos.

Resumo

O Mensagem Broker, bem projetado, é uma artéria de eventos confiável, onde a rotação é previsível e a resistência a falhas é incorporada ao nível da topologia. Use trocadores topic, padrão único de chaves, work/retry/DLQ para cada fluxo crítico, idempotidade e outbox, SLO rigoroso e observabilidade. Com um pneu de streaming e projeções de estado, isso dá à plataforma iGaming uma velocidade sustentável, transparência e controle da complexidade à medida que a carga aumenta.

Contact

Entrar em contacto

Contacte-nos para qualquer questão ou necessidade de apoio.Estamos sempre prontos para ajudar!

Telegram
@Gamble_GC
Iniciar integração

O Email é obrigatório. Telegram ou WhatsApp — opcionais.

O seu nome opcional
Email opcional
Assunto opcional
Mensagem opcional
Telegram opcional
@
Se indicar Telegram — responderemos também por lá.
WhatsApp opcional
Formato: +indicativo e número (ex.: +351XXXXXXXXX).

Ao clicar, concorda com o tratamento dos seus dados.