Pergunta

Eu estava lendo abit sobre JMS e Apache ActiveMQ. E queria saber o que uso no mundo real tem pessoas aqui utilizado JMS ou tecnologias de fila de mensagens semelhantes para?

Foi útil?

Solução

JMS (ActiveMQ é uma implementação corretor JMS) pode ser utilizada como um mecanismo para permitir o processamento de pedido assíncrono. Você pode querer fazer isso porque o pedido de levar um longo tempo para concluir ou porque várias partes podem estar interessado no pedido real. Outra razão para usá-lo é permitir que vários clientes (potencialmente escritos em linguagens diferentes) para informações de acesso via JMS. ActiveMQ é um bom exemplo aqui porque você pode usar o protocolo STOMP para permitir o acesso de um cliente C # / Java / Ruby.

Um exemplo do mundo real é que de uma aplicação web que é usado para fazer um pedido para um cliente particular. Como parte de colocar essa ordem (e armazená-lo em um banco de dados), você pode querer realizar uma série de tarefas adicionais:

  • loja da ordem em algum tipo de sistema partidário back-end terceiro (como SAP)
  • Envie um e-mail para o cliente para informá-los a sua ordem foi colocada

Para fazer isso o código do aplicativo iria publicar uma mensagem em uma fila JMS que inclui um ID de ordem. Uma parte do seu aplicativo ouvindo a fila pode responder ao evento, levando o orderId, olhando a ordem no banco de dados e, em seguida, colocar a ordem com outro sistema de terceiros. Outra parte do seu aplicativo pode ser responsável por tomar o orderId e enviar um email de confirmação para o cliente.

Outras dicas

Use o tempo todo para processar operações de longa execução de forma assíncrona. Um usuário da web não vai querer esperar por mais de 5 segundos para um pedido de processo. Se você tem um que corre mais do que isso, um design é para submeter o pedido para uma fila e imediatamente enviar de volta uma URL que o usuário pode verificar para ver quando o trabalho estiver concluído.

publish / subscribe é outra boa técnica para separar os remetentes de muitos receptores. É uma arquitetura flexível, porque os assinantes podem entrar e sair quando necessário.

Eu tive tantos usos surpreendentes para JMS:

  • comunicação Web chat para atendimento ao cliente.

  • registo de depuração no backend. Todos os servidores de aplicação transmitido mensagens de depuração em vários níveis. cliente Um JMS poderia, então, ser lançado para assistir mensagens de depuração. Claro que eu poderia ter algo usado como syslog , mas isso me deu todos os tipos de formas para filtrar a saída com base em informações contextuais (eq por nome de servidor de aplicativos, chamada de API, o nível de log, ID de usuário, tipo de mensagem, etc ...). Eu também colorizado a saída.

  • registo de depuração para o arquivo. O mesmo que acima, apenas partes específicas foram retirados usando filtros, e registrado para o arquivo para o registo geral.

  • Alerta. Mais uma vez, uma configuração semelhante à de registro acima, prestando atenção para erros específicos e alertar as pessoas através de vários meios (e-mail, mensagem de texto, mensagens instantâneas, Growl pop-up ...)

  • dinamicamente configurar e controlar grupos de software. Cada servidor de aplicações iria transmitir uma mensagem "configure-me", em seguida, um daemon de configuração que iria responder com uma mensagem contendo todos os tipos de informações de configuração. Mais tarde, se todos os servidores de aplicativos necessários suas configurações alteradas de uma vez, isso poderia ser feito a partir do daemon de configuração.

  • E os usuais - em fila transações para a atividade atrasada tais como faturamento, processamento de pedidos, provisionamento, geração de e-mail ...

É ótimo em qualquer lugar que você quer garantir a entrega de mensagens de forma assíncrona.

Distribuído (a) computing síncrona.
Um exemplo do mundo real poderia ser um quadro de notificação de todo o aplicativo, que envia mails para as partes interessadas em vários pontos durante o curso do uso do aplicativo. Assim, a aplicação agiria como um Producer por criar um objeto Message, colocando-o em um Queue particular, e seguir em frente.
Haveria um conjunto de Consumers que se inscrever para o Queue em questão, e iria cuidar manusear o enviado Message de diâmetro. Note-se que durante o decurso desta operação, os Producers está dissociada da lógica de como um determinado Message seria tratado.
quadros de mensagens (ActiveMQ e os gostos) agir como uma espinha dorsal para facilitar essas transações Message fornecendo MessageBrokers.

Eu usei-o para enviar trades intraday entre os diferentes sistemas de gestão de fundos. Se você quer aprender mais sobre o que um grande mensagens tecnologia é, posso absolutamente recomendar o livro " Enterprise Integration Patterns ". Há alguns exemplos JMS para coisas como pedido / resposta e de publicação / assinatura.

Messaging é uma excelente ferramenta para a integração.

Nós usá-lo para iniciar o processamento assíncrono que não queremos interromper ou conflito com uma transação existente.

Por exemplo, digamos que você tem uma peça cara e muito importante da lógica como "coisas buy", uma parte importante do material buy seria 'notificar loja de material'. Nós fazemos a chamada notificar assíncrona para que qualquer lógica / processamento que está envolvido na notificar chamada não bloquear ou lidar com recursos com a lógica buy negócio. resultado final, comprar concluída, o usuário está feliz, nós temos o nosso dinheiro e porque a fila é garantida a entrega a loja é notificado assim que abre ou assim que há um novo item na fila.

Eu usei-o para o meu projecto académico que estava online site de varejo semelhante à Amazon. JMS foi usado para manipular seguintes recursos:

  1. Atualização da posição das encomendas feitas pelos clientes, como a expedição viaja de um local para outro. Isso foi feito através do envio de mensagens de forma contínua para JMS Queue.
  2. Alertando sobre quaisquer eventos incomuns, como a expedição ficando atrasado e, em seguida, enviar e-mail para o cliente.
  3. Se a entrega for atingido seu destino, o envio de um evento de entrega.

Nós tivemos vários clientes remotos também implementadas conectados ao servidor principal. Se a conexão está disponível, que eles usam para acessar o banco de dados principal ou se não usar seu próprio banco de dados. A fim de consistência dos dados alça, que havia implementado mecanismo 2PC. Para isso, foi utilizado JMS para a troca de mensagens entre esses sistemas ou seja um atuando como coordenador que irá iniciar o processo através do envio de mensagem na fila e outros irão responder em conformidade enviando de volta uma mensagem na fila. Como outros já mencionado, este foi semelhante ao pub sub modelo /.

Eu vi JMS usados ??em diferentes projetos comerciais e acadêmicas. JMS pode facilmente entrar em sua imagem, sempre que você quiser ter um sistemas distribuídos totalmente dissociados. Geralmente, quando você precisa enviar o seu pedido de um nó, e alguém na sua rede cuida dele sem / com dando o remetente qualquer informação sobre o receptor.

No meu caso, eu usei JMS no desenvolvimento de um middleware orientado a mensagem (MOM) em minha tese, onde tipos específicos de objetos orientados a objetos são gerados em um lado como seu pedido, e compilado e executado no outro lado como sua resposta.

Apache Camel usado em conjunto com ActiveMQ é ótima maneira de fazer Integration Patterns Empresa

Temos usado de mensagens para gerar cotações on-line

Estamos usando JMS para comunicação com sistemas em um grande número de locais remotos através de redes não confiáveis. O acoplamento em combinação com mensagens confiável produz uma paisagem sistema estável: Cada mensagem será enviada tão logo seja tecnicamente possíveis problemas maiores, em rede não terá influência sobre todo o sistema paisagem ...

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