As filas do Rabbit residem na memória e, portanto, serão muito mais rápidas do que implementá-las em um banco de dados. Uma (boa) fila de mensagens dedicada também deve fornecer recursos essenciais relacionados ao enfileiramento, como controle de fluxo / otimização e a capacidade de escolher diferentes algoritmos de roteamento, para citar alguns (o coelho fornece esses e muito mais). Dependendo do tamanho do seu projeto, você também pode querer que o componente de passagem de mensagens seja separado do banco de dados, para que, se um componente sofrer uma carga pesada, ele não atrapalhe a operação do outro.
Quanto aos problemas que você mencionou:
pesquisas mantendo o banco de dados lento e com baixo desempenho : Usando o Rabbitmq, os produtores podem enviar atualizações aos consumidores, com desempenho muito superior ao das pesquisas. Os dados são simplesmente enviados ao consumidor quando necessário, eliminando a necessidade de verificações desnecessárias.
travamento da mesa -> novamente com baixo desempenho: Não há mesa para travar: P
milhões de linhas de tarefa -> novamente, a pesquisa é de baixo desempenho: Como mencionado acima, o Rabbitmq operará mais rápido à medida que reside na RAM e fornece controle de fluxo. Se necessário, ele também pode usar o disco para armazenar temporariamente as mensagens se ficar sem memória RAM. Após a versão 2.0, o Rabbit melhorou significativamente seu uso de RAM. Opções de cluster também estão disponíveis.
Em relação ao AMQP, eu diria que um recurso muito interessante é a "troca" e a capacidade de rotear para outras trocas. Isso oferece mais flexibilidade e permite criar uma ampla variedade de tipologias de roteamento elaboradas, que podem ser muito úteis ao dimensionar. Para um bom exemplo, consulte:
(fonte: springsource.com )
e: http://blog.springsource.org/2011/04/01/routing-topologies-for-performance-and-scalability-with-rabbitmq/
Finalmente, no que diz respeito aos redis, sim, ele pode ser usado como um intermediário de mensagens e pode se dar bem. No entanto, o Rabbitmq possui mais recursos de enfileiramento de mensagens do que o redis, já que o rabbitmq foi construído a partir do zero para ser uma fila de mensagens dedicada em nível corporativo com todos os recursos. Redis, por outro lado, foi criado principalmente para ser um armazenamento de valores-chave na memória (embora faça muito mais do que isso agora; é referido como um canivete suíço). Ainda assim, eu li / ouvi muitas pessoas obtendo bons resultados com o Redis para projetos de tamanho menor, mas não ouvi muito sobre isso em aplicativos maiores.
Aqui está um exemplo de redis sendo usado em uma implementação de bate-papo de pesquisa longa: http://eflorenzano.com/blog/2011/02/16/technology-behind-convore/