Pular para o conteúdo principal

Selective Consumer

Descrição​

Selective Consumer é um consumidor que filtra as mensagens do canal e aceita somente as que atendem a seus critérios. O produtor define um valor de seleção na mensagem (por exemplo, um tipo ou uma propriedade) e o consumidor declara um seletor sobre esse valor.

Em canais ponto a ponto, vários consumidores seletivos funcionam como consumidores concorrentes, mas cada mensagem só vai para um que a aceite; mensagens sem consumidor compatível ficam no canal até expirar. Em canais publish-subscribe, cada assinante só recebe as cópias de seu interesse, e o sistema pode evitar enviar cópias que seriam descartadas.

Com isso, um único canal pode se comportar como vários Datatype Channels, o que ajuda quando o número de canais suportado é limitado.

Problemas que resolve​

  • Consumidor que recebe mensagens que não lhe interessam.
  • Proliferação de canais, um por tipo de mensagem.
  • Tráfego desnecessário de cópias descartadas.

Quando usar​

  • Quando um canal carrega vários tipos de mensagem e cada consumidor trata um subconjunto.
  • Quando o sistema de mensageria suporta seletores no servidor.

Quando evitar​

  • Quando há canais dedicados por tipo com custo aceitável.
  • Quando mensagens sem consumidor compatível poderiam ficar paradas indefinidamente.

Trade-offs​

GanhoCusto / Risco
Menos canais para gerenciarSeletor mal escrito deixa mensagens órfãs
Menos tráfego inútilCarga de filtragem no broker
Consumidores especializadosAcoplamento entre produtor e critérios do consumidor
  • Documente o contrato do valor de seleção e monitore mensagens que ninguém consome.

Diagrama​

Cada consumidor recebe apenas as mensagens cujo valor de seleção atende a seu critério.

Padrões relacionados​

Referência​