Pergunta

Eu estou procurando quadro de mensagens leve em Java. Minha tarefa é processar eventos em forma de um SEDA:. Sei que algumas etapas do processamento pode ser concluída rapidamente, e outros não, e gostaria de dissociar esses estágios de processamento

Vamos dizer que eu tenho componentes A e B e processamento motor (se a embalagem ou qualquer outra coisa) invoca um componente, que por invoca volta B. componente Eu não me importo se o tempo de execução do componente B será 2s, mas eu faço importo se o tempo de execução de um componente é inferior a 50ms, por exemplo. Portanto, parece mais razoável para um componente para enviar uma mensagem para B, que B irá processar no momento desejado.

Estou ciente de diferentes implementações de JMS e Apache ActiveMQ: eles são muito pesado para isso. Eu procurei por alguns mensagens leve (com características muito básicas, como mensagens de serialização e roteamento mais simples) sem sucesso.

Você tem alguma coisa para recomendar nesta edição?

Foi útil?

Solução

Você precisa de qualquer tipo de persistência (por exemplo, se o seu dies JVM em entre o processamento de milhares de mensagens) e você precisa de mensagens para atravessar a quaisquer outros JVMs?

Se seu tudo em uma única JVM e você não precisa se preocupar com as transações, recuperação ou perda de mensagem se uma JVM dies -., Em seguida, como Chris diz acima, executores são muito bem

ActiveMQ é bastante leve; você pode usá-lo em uma única JVM sem persistência, se você quiser; então você pode permitir transações / persistência / recuperação / comunicação remota (trabalhando com várias JVMs) como e quando você precisar dele. Mas se você precisa de nenhuma dessas coisas, então sua Overkill -. Basta usar Executores

A propósito outra opção se você não tem certeza que os passos necessidade poder persistência / confiabilidade ou balanceamento de carga para várias JVMs seria esconder o uso de middleware completamente para que você possa alternar entre na memória SEDA filas com executores de JMS / ActiveMQ como e quando você precisar.

por exemplo. pode ser que algumas medidas precisam ser confiáveis ??e recuperável (assim a necessidade de algum tipo de persistência) e outras vezes não.

Outras dicas

realmente leve? Executores . :-) Então você configurar um executor (B, na sua descrição), e A submete simplesmente tarefas para o executor.

Eu acho Apache Camel abrange todas as suas necessidades. É obras dentro do estilo SEDA JVM e suportes ( http://camel.apache.org/seda.html ) e roteamento simpe. Pode ser usado em seu próprio, ou com mola, com um provedor JMS ou outros adaptadores.

Infelizmente para ressuscitar uma discussão antiga, mas talvez ajude alguém lê-lo ... Eu acho FFMQ é um bom candidato para um quadro de mensagens leve.

UPDATE: no entanto eu não tenho certeza se ele suporta atrasos reentrega (o problema de inatividade-fila). Eu iria encontrar este mesmo utilizável para provedores leves. Mas eu acho que poderia ser possível com uma combinação de propriedades de consulta e mensagens MessageSelector.

Para obter ajuda para alguém ler este tópico:
Um do quadro de mensagens mais leve é ?? Mbasseder . MBassador é um peso-leve implementação muito mensagem (evento) de ônibus após a publicar subscrever padrão. Ele é projetado para facilidade de uso e pretende ser rico em recursos e extensível, preservando a eficiência dos recursos e desempenho.
O núcleo de alta performance de MBassador é uma estrutura de dados especializada que minimiza a possibilidade de contenção de modo a que a degradação de acesso simultâneo desempenho é mínima.
Características: definição ouvinte declarativa através de anotações, sincronização e / ou entrega de eventos assíncrona, fracas referências, filtragem de mensagens

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