Pergunta

É possível fazer com que vários consumidores ouviam em uma única instância de MSMQ e usar a interface seletiva do consumidor para que cada um lide com um subconjunto distinto das mensagens? Não consigo fazer com que esse cenário funcione corretamente usando o pub/sub - um único consumidor na fila funciona bem, mas ao usar> 1 consumidores (várias instâncias do mesmo executável) nenhuma mensagem aparece em nenhum lugar. Pelo que entendi, esse não é o caso de 'consumidores concorrentes', pois apenas um único consumidor processará uma única mensagem.

Qualquer ajuda ou indicadores são apreciados.

Foi útil?

Solução

Se você estiver usando o Masstransit para despachar mensagens de uma fila MSMQ, recomenda -se que a fila seja local da caixa.

Dito isto, se você tiver vários processos que estão lendo a mesma fila para fins de distribuição da carga da mensagem, poderá usar o recebimento seletivo para consumir apenas mensagens em cada instância que são relevantes para esse processo.

Por exemplo, se você tiver várias instâncias de um aplicativo que envie mensagens para um serviço e esse serviço responder com uma mensagem correlacionada, poderá assinar a mensagem correlacionada pelo identificador e somente essas mensagens inscritas serão entregues. As mensagens que não são selecionadas permanecerão na fila até que sejam processadas por qualquer um dos processos interessados.

Devido a esse padrão, é altamente recomendável que uma expiração seja definida na mensagem para que as respostas ignoradas não entupem a fila ao longo do tempo.

Esse cenário é bastante comum ao replicar um padrão de solicitação/resposta por meio de mensagens.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top