Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Dúvida sobre a assinatura e escalabilidade

Os tópicos servem para fazer envios de mensagens de forma distribuídas (para N sistemas), isso separado pelo clientId.

Minha dúvida é a seguinte. Se eu precisar escalar o consumidor TopicoEstoque por exemplo, cada conexão deve ter uma assinatura diferente?

4 respostas

Opa, vc pode registrar sim quantos listeners vc quiser para o tópico. Agora toma cuidado, no tópico, se vc registrar dois objetos iguais no mesmo tópico, provavelmente você vai ter uma ação duplicada... Por exemplo, um listener que envia email no final de uma compra...

Mais pelo teste que eu fiz, ele não faz balanceamento de carga. Posso estar fazendo errado. Como no próprio exemplo do professor. Um consumer para o "sistema de estoque", e um para o financeiro. Só que preciso balancear o consumer do financeiro para dar conta da demanda.

Neste caso, ambos os sistemas recebem a mensagem, mais no caso do financeiro, ocorre um balanceamento, ou seja, só um desses consumers vai receber a mensagem desse tópico.

Tentei criar 2 consumers Financeiro1 e Financeiro 2, com ClientIDs diferentes, mais assinaturas iguais. Não balanceou. Se criar com o mesmo ClientID da uma exceção de client já existente.

Só queria saber mesmo para complementar o que estudei sobre os tópicos.

solução!

Esse do financeiro não deveria escutar um tópico e sim uma fila :/. Isso que vc quer é feito com filas, não com tópico.. se vc adicionar vários listeners a uma fila(queue), o broker vai mandar uma mensagem para cada :).

Era justamente isso que eu queria saber. Obrigado.