Pergunta

Se você quiser usar um produto de enfileiramento para mensagens duráveis ​​no Windows, executando .NET 2.0 e superior, quais alternativas ao MSMQ existem hoje?Eu conheço o ActiveMQ (http://activemq.apache.org/) e vi referências ao WSMQ (apontando para http://wsmq.net), mas o site parece estar fora do ar.

Há alguma outra alternativa?

Foi útil?

Solução

Não posso começar a dizer coisas boas o suficiente sobre o Tibco EMS - uma implementação da especificação de mensagens Java JMS.O Tibco EMS possui excelente suporte para clientes .NET - incluindo Compact Framework .NET no WinCE.(Eles também têm bibliotecas de cliente C.)

Portanto, se você estiver construindo um aplicativo distribuído heterogêneo envolvendo código de mensagens executado em Windows, Unix (AIX/Solaris), Linux ou Mac OS X, o Tibco EMS é a solução.

Confira meu artigo aqui:

Usando JMS para desenvolvimento de software distribuído

Eu trabalhava na Microsoft e fiz algumas implementações com MSMQ enquanto estava lá.Mas você sabe, a Microsoft só se preocupa com o Windows.Eles dependiam de terceiros para fornecer clientes MSMQ para outras plataformas.Meu encontro com o Tibco EMS foi uma experiência muito melhor.Era muito evidente que a Tibco entendia muito mais as mensagens do que a Microsoft.E a Tibco se esforçou para apoiar ela própria diversas ligações de clientes.É por isso que eles eventualmente mudaram o nome do produto de Tibco JMS para Tibco EMS (Enterprise Messaging Service).

E construí sistemas de software heterogêneos em torno do Tibco EMS.Clientes C# .NET Winform rolados interagindo com Java/JBoss de camada intermediária por meio de mensagens Tibco EMS.(E também possuem computadores industriais incorporados WinCE que usam o cliente Compact Framework .NET Tibco.)

Links para meus escritos JMS

Outras dicas

Pode não ser um conselho de "melhores práticas" aqui ...mas com base nas necessidades e experiências da vida real:temos um sistema distribuído, 60 caixas rodando cada 10 clientes, todos realizam a tarefa X e precisam realizar a próxima tarefa de uma fila.A fila está sendo alimentada por outro "cliente"...

Usamos comunicação entre processos, usamos MSMQ, tentamos o corretor de serviços...Simplesmente não funciona a longo prazo porque você está cedendo o controle do seu aplicativo à Microsoft.Funciona muito bem, desde que suas necessidades sejam atendidas.torna-se um inferno quando você precisa de algo sem suporte.

A melhor solução para nós foi:Use uma tabela do Banco de Dados SQL como fila.Não reinvente a roda aí, pois você cometerá erros (travamentos).Existem informações sobre como fazer isso, é muito fácil e lidamos com mais de 200 mil mensagens por 24 horas (com 60x10 = 600 leituras e gravações simultâneas na fila).Isso é um acréscimo ao mesmo servidor SQL que cuida do restante do material do aplicativo...

Algumas razões pelas quais o MSMQ não funciona:

  1. Quando você precisa alterar a lógica da fila para não FIFO, mas para algo como "a mensagem RED mais antiga" ou "a mensagem AZUL mais antiga", você não pode fazer isso.(Eu sei o que as pessoas vão dizer, você pode fazer isso tendo um fila vermelha e um fila azul...Mas e se o número/tipos de filas for dinâmico com base na forma como o aplicativo é administrado e muda diariamente?)

  2. Ele adiciona um ponto de falha e um pesadelo de implantação (a fila é um ponto de falha e você precisa definir as permissões corretas em todas as caixas para ler/escrever mensagens, etc. 'no software empresarial, você paga com sangue por esse tipo de coisa) .Servidor SQL...todos os clientes já estão escrevendo/lendo do banco de dados, é apenas mais uma tabela.

A estrutura RabbitMQ parece ter sido esquecido aqui.Se as pessoas ainda se importam, ele possui uma base de código .NET 2.0 e vem com uma ligação WCF semelhante a netMsmqBinding.A ligação naturalmente requer pelo menos .NET 3.0 e tem mais recursos do que o netMsmqBinding integrado.Além de tudo, é compatível com Mono.Vale a pena dar uma olhada.

E quanto ao SQL 2005 corretor de serviços?

Por que não usar ActiveMQ?:)

Se o custo não for um problema (há também um SKU expresso) então dê uma olhada no gorila de 800.000 libras.WebSphere MQ (Série MQ).Ele é executado em praticamente qualquer plataforma e suporta tantos gerenciadores de filas e padrões de mensagens diferentes que realmente não é apropriado listá-los aqui.

Se a alta disponibilidade for importante, vale a pena dar uma olhada no Amazon SQS.Não há muita sobrecarga adicional se as mensagens vierem de locais físicos diferentes.Barato e escalável!

Redis é outra raça popular nesta plataforma.Verifique a implementação de enfileiramento baseado em conjunto e também o padrão Pub/Sub.Parece promocional

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