Quem aqui manja de sistemas distribuídos via mensagens assíncronas (MQ)?

Traballho com isso e gostaria de fazer contato com outras pessoas com experiência nessa área. Algumas perguntas para facilitar:

  1. Qual a solução de queue que vc utiliza e o que acha dela? (ZeroMQ, ActiveMQ, RabbitMQ, Proprietário, etc.)

  2. Qual o tipo de sistema que vc trabalhou com mensagens assíncronas? (Financeiro, Hedge Fund, Bolsas de Valores, etc.)

Trabalhei, há pouquíssimo tempo atrás, com uma plataforma de execução de workflows dentro de um sistema de pagamentos. Esta plataforma trabalhava tanto com ActiveMQ (numa primeira versão) quanto com HornetQ (segunda versão).

Aliás, fiz um post no blog da empresa (olha o jabá :slight_smile: ) comparando o HornetQ com Amazon SQS (que não são exatamente a mesma coisa, mas chega bem perto - ler comentários para entender o porque) - http://blog.concretesolutions.com.br/2012/09/amazon-sqs-x-jboss-hornetq/ .

[]'s

[quote=asaudate]Trabalhei, há pouquíssimo tempo atrás, com uma plataforma de execução de workflows dentro de um sistema de pagamentos. Esta plataforma trabalhava tanto com ActiveMQ (numa primeira versão) quanto com HornetQ (segunda versão).

Aliás, fiz um post no blog da empresa (olha o jabá :slight_smile: ) comparando o HornetQ com Amazon SQS (que não são exatamente a mesma coisa, mas chega bem perto - ler comentários para entender o porque) - http://blog.concretesolutions.com.br/2012/09/amazon-sqs-x-jboss-hornetq/ .

[]'s[/quote]

A Concrete é uma excelente empresa. Estudei com os donos. :slight_smile:

Qual a facilidade de desenvolvimento com o HornetQ ? E o preço? (vc diz no seu blog que pode ser cara)

[quote=saoj][quote=asaudate]Trabalhei, há pouquíssimo tempo atrás, com uma plataforma de execução de workflows dentro de um sistema de pagamentos. Esta plataforma trabalhava tanto com ActiveMQ (numa primeira versão) quanto com HornetQ (segunda versão).

Aliás, fiz um post no blog da empresa (olha o jabá :slight_smile: ) comparando o HornetQ com Amazon SQS (que não são exatamente a mesma coisa, mas chega bem perto - ler comentários para entender o porque) - http://blog.concretesolutions.com.br/2012/09/amazon-sqs-x-jboss-hornetq/ .

[]'s[/quote]

A Concrete é uma excelente empresa. Estudei com os donos. :slight_smile:

Qual a facilidade de desenvolvimento com o HornetQ ? E o preço? (vc diz no seu blog que pode ser cara)

Estarei lançando em breve uma solução comercial de mensageria bastante poderosa e flexível que até uma hiena vai conseguir colocar para rodar. E com uma latência baixíssima na casa dos 12 microsegundos round-trip time.[/quote]

O preço pode ser caro em comparação com o SQS… afinal de contas, você precisa de pessoal especializado em manter o cluster, administrar, tudo isso. No SQS, você entra lá, teu cluster é administrado pela Amazon, você só precisa se preocupar basicamente com o desenvolvimento. Logo, esse comparativo de preço é válido para qualquer MOM e o SQS.

Quanto à facilidade… sei lá, eu tenho uma certa experiência com isso, pode ser que o que é fácil pra mim não é fácil pra outras pessoas. Em geral, eu utilizo bem a parte JMS mesmo. Ele é um pouco mais chato de configurar em relação a um ActiveMQ da vida, mas não chega a ser tão difícil assim. Ainda mais se o Application Server for o JBoss AS 7, que já vem com ele integrado.

[]'s

Rapaz,tai um negócio que eu sempre tive vontade de trabalhar mas nunca tive a chance…conte um pouco mais da experiencia…

[quote=raf4ever][quote=saoj]
Traballho com isso e gostaria de fazer contato com outras pessoas com experiência nessa área. Algumas perguntas para facilitar:

  1. Qual a solução de queue que vc utiliza e o que acha dela? (ZeroMQ, ActiveMQ, RabbitMQ, Proprietário, etc.)

  2. Qual o tipo de sistema que vc trabalhou com mensagens assíncronas? (Financeiro, Hedge Fund, Bolsas de Valores, etc.)

[/quote]

Rapaz,tai um negócio que eu sempre tive vontade de trabalhar mas nunca tive a chance…conte um pouco mais da experiencia…[/quote]

Rafael, dá para escrever um livro sobre isso, então vou tentar resumir tudo em algumas frases.

Sistema distribuído = várias máquinas conversando entre si. Vários sub-sistemas conversando entre si.

Como essa comunicação pode se dar?

Comunicação Síncrono => RPC, RMI, HTTP, Web Services, blah. Basicamente vc faz uma requisição para um outro sub-sistema e recebe uma resposta imediatamente. Problema => ponto-a-ponto. Como vc faz se quiser enviar uma mensagem para o sistema inteiro? O que acontece se o outro sistema não responde?

Comunicação Assíncrona => MQ (Messaging Queue). Basicamente um queue central (middleware) recebe mensagens e redistribui para quem estiver interessado num esquema publish-subscribe. Se feito direito, esse modelo promove desacoplamente e performance.

Claro que isso acima só se justifica para sistemas extramemente parrudos num ambiente realmente distribuído. Não faz qualquer sentido usar algo assim no sistema da sua micro-empresa ou no seu website, por isso que pouca gente vai precisar mexer com isso.

Num sistema onde performance é fundamental (banco, bolsa, financeira, corretora, fábrica, correios, cia aérea, <complete aqui com a sua experiência>, etc) vc só consegue performance com desacoplamento via mensagens assíncronas, ou seja: ao invés de um só sistema fazer tudo (e são muitas coisas!), vc compartilha o que tem que ser feito entre vários sistemas que se comunicam entre si. Com desacoplamento vc tb ganha alta-disponibilidade, failover e essas coisas, ou seja, um sub-sistema pode morrer e ser restartado sem comprometer o sistema inteiro. :wink:

Trabalho com o BMQ, presto serviço para uma siderurgica multinacional e a comunicação entre sistemas é feita usando MQ, a empresa que trabalho fez um framework para essa empresa que usa o BMQ dentro do java usando JNA pois o BMQ é feito em C, na verdade fazemos chamada as funções que o BMQ disponibiliza.