onjuntos de trabalhadores e filas de vários inquilinos com RabbitMQ

Trabalho em um aplicativo Web que é um aplicativo baseado em nuvem com vários inquilinos (muitos clientes, cada um com seu próprio "ambiente" separado, mas todos em conjuntos de hardware compartilhados) e estamos apresentando a capacidade de um usuário fazer o lote trabalho para processamento posterior. Os tipos de trabalho em lote realmente não são importantes, é apenas a quantidade suficiente para fazê-lo sem uma fila de trabalho não é realmente prático. Selecionamos o RabbitMQ como nossa estrutura de fila subjacente.

Por sermos um aplicativo com vários locatários, não queremos necessariamente que os clientes possam causar longos tempos de processo na fila para outro cliente. Portanto, uma ideia que criamos é a criação de uma fila por cliente e ter um conjunto de trabalhadores compartilhados apontado em TODAS as nossas filas de clientes. O problema é que, da melhor forma que consigo entender, os trabalhadores estão diretamente vinculados a uma fila específica, não a uma troca. Em nosso mundo ideal, nossas filas de clientes ainda serão processadas, sem que um cliente bloqueie outro, a partir de um pool de trabalhadores compartilhados que possamos aumentar ou diminuir conforme necessário, lançando mais trabalhadores ou fechando os ociosos. Ter trabalhadores vinculados a uma fila específica nos impede disso em um sentido prático, já que frequentemente temos muitos trabalhadores ociosos em uma fila sem atividade.

Existe um relativamente simples para conseguir isso? Sou relativamente novo no RabbitMQ e realmente não consegui realizar o que buscamos. Também não queremos escrever um aplicativo de consumidor multithread muito complexo, isso é um tempo gasto no tempo de desenvolvimento e teste que provavelmente não podemos pagar. Nossa pilha é baseada em Windows / .Net / C #, se for germaine, mas acho que isso não deve ter grande importância na questão em questã

questionAnswers(4)

yourAnswerToTheQuestion