Boa estratégia para enfileiramento de mensagens?

No momento, estou projetando um aplicativo que, no final, pretendo migrar para o Windows Azure. No curto prazo, no entanto, ele será executado em um servidor que eu mesmo hospedarei.

O aplicativo envolve vários aplicativos da Web separados - alguns deles são essencialmente serviços WCF que recebem dados e alguns são sites para usuários gerenciarem dados. Além disso, será preciso haver um serviço de trabalho em execução em segundo plano que processará dados de várias maneiras.

Eu estou muito interessado em usar uma arquitetura desacoplada para isso. Idealmente, estou querendo que os componentes (ou seja, aplicativos da Web e serviços de trabalho) saibam o mínimo possível sobre o outro. Parece que usar uma fila de mensagens será a melhor solução aqui - os aplicativos da Web podem enfileirar mensagens com unidades de trabalho na fila e o serviço do funcionário pode selecioná-las e processá-las conforme necessário.

No entanto, quero elaborar um bom conjunto de tecnologias para fazer isso, tendo em mente que, em última análise, irei mudar para o Azure e quero minimizar a quantidade de retrabalho que precisarei fazer quando migrar para a nuvem . O Azure possui um componente Queue, que parece ideal para as minhas necessidades. O que eu gostaria de fazer é criar algo que imite isso o mais próximo possível.

Parece que há várias opções (estou usando o .NET no Windows, com um back-end do SQL Server 2005) - as que eu encontrei até agora são:

MSMQCorretor de serviços do SQL ServerRolando o meu próprio usando uma tabela de banco de dados e alguns procs armazenados

Eu queria saber se alguém tem alguma sugestão para isso - ou se alguém fez algo semelhante e tem conselhos sobre coisas para fazer / evitar. Eu percebo que cada situação é diferente, mas neste caso eu acho que meus requisitos de filas são bem genéricos, então eu adoraria ouvir os pensamentos de qualquer outra pessoa sobre a melhor maneira de fazer isso.

Desde já, obrigado,

John

questionAnswers(3)

yourAnswerToTheQuestion