Pergunta

Minha organização está se preparando para implementar um novo sistema, que é um aplicativo ASP.NET. O aplicativo terá uma grande fila de trabalho offline iniciado pelo site. Esta fila manterá diferentes tipos de atividade, idealmente nas mensagens XML. Pense em coisas como notificações por e -mail, tarefas programadas, etc.

No passado, a organização provavelmente teria usado o MSMQ para realizar essa tarefa. No entanto, eles consideram o MSMQ ser da velha escola (e eu concordo em parte com eles), por isso vamos fazer uma revisão arquitetônica para determinar a solução "melhor".

Na minha opinião, existem algumas opções em potencial:

1. Fique com uma nova implementação na versão mais recente do MSMQ - não ideal, mas um produto conhecido.
2. Use o Windows Workflow Foundation, que ouvi de alguns outros desenvolvedores que usaram isso para esse tipo de coisa.
3. Desenvolva uma solução de banco de dados personalizada.

Estou perdendo alguma solução óbvia? Idealmente, isso será um produto da Microsoft, mas realmente precisa funcionar em uma loja centrada na Microsoft.

Estou preocupado com o seguinte:
1. Facilidade de implementação e manutenção
2. Uma solução que estará por algum tempo
3. Capaz de lidar com um bom volume de linhas, com dados XML de tamanho médio neles
4. Sistema de fila absolutamente confiável, com atualização rápida (vários processos de utilitário provavelmente estarão pegando registros da fila para processá -los).

Foi útil?

Solução

Ler o post parece ser a única razão pela qual você acha que o MSMQ não é adequado é porque alguém acha que é "velha escola". Eu não pensaria que esse é um motivo suficiente para não usá -lo, pois parece que sua empresa tem experiência com ela, para que não haja curva de aprendizado, e isso significa fácil implementação e manutenção.

Além disso, o MSMQ abordaria perfeitamente todas as preocupações que você mencionou que tem. Portanto, a menos que haja outra razão "real" para não usá -lo, eu acho que permanecerá com o MSMQ.

Outras dicas

Eu sugiro examinar o WCF, você pode configurá -lo para especificar mensagens persistentes e na fila e ele usa a tecnologia MSMQ sob as cobertas. A abstração/interface do WCF e a tecnologia devem estar por muito tempo.

Eu concordo com o Moose-in-the-jungle que o MSMQ provavelmente é o que você deve manter.

Talvez eu pesquisasse algumas API alternativas que usam MSMQ sob a capa, como NSERVICEBUS De Udi Dahan.

Como alternativa ao ActiveMQ (mencionado acima), há RabbitMQ de código aberto. Pelo que eles dizem, ele se integra bem ao ASP.NET e WCF.

http://www.rabbitmq.com/

Você procurou um corretor de serviço no SQL Server? É um sistema de filas que usa o banco de dados como uma loja de apoio.

Você tem algumas opções:

  1. BizTalk: Ele é construído para entrega e roteamento garantidas de mensagens no nível corporativo. É difícil configurar, caro e tem uma curva de aprendizado acentuada, no entanto, depois que você a liga, é sólido.

  2. MSMQ: Rápido, barato como em trabalhos gratuitos, fáceis de usar e simplesmente simples.

  3. SQL Service Broker. É um passo em relação ao MSMQ, mas um grande passo do BizTalk.

Os principais problemas realmente se resumem ao conjunto de recursos que você precisa. BizTalk é praticamente seu próprio ambiente de desenvolvimento. Enquanto o MSMQ exige que você construa tudo ao seu redor.

Você pode olhar para usar um corretor de mensagens de código aberto, como Apache ActiveMq

Parece que, para todo o seu sistema, você pode usar o Windows Workflow para gerenciar sua lógica de negócios e apenas usar o MSMQ como armazenamento para sua lista de tarefas. Seu fluxo de trabalho começará retirando a próxima mensagem da fila e determine o que fazer com ela.

Ficar filas é algo que você não quer mexer consigo mesmo, coloque sua confiança em algo fora da prateleira que funciona e que já foi testado por muitas e muitas pessoas já.

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