Pergunta

Eu estou querendo saber sobre o reliabilty de entrega de mensagens em sistemas de mensagens como WebSphereMQ ou ActiveMQ (utilizado via JMS). Tanto quanto eu sei mensagens podem ser tamponado se o recepient não está disponível e será entregue mais tarde.

Agora eu estou querendo saber o que acontece se o remetente temporariamente não pode acessar a rede. Existe algum tipo de buffer local, que irá enviar as mensagens mais tarde? Suponho que isso depende de onde o corretor mensagem está em execução. Há corretores locais em todas as máquinas ou apenas um central?

Para identificar a minha pergunta: é um sistema de mensagens a escolha certa se eu precisar para assegurar que as mensagens são recebidas, eventualmente, mesmo em face da falha de rede temporária? Existe uma certa configuração necessária para alcançar este reliabilty?

Os ponteiros a documentação relevante seria apreciada.

Foi útil?

Solução

A solução comum é chamado de "armazenar e transmitir". Nesses sistemas, uma vez que você entregue a mensagem para o agente de mensagens local torna-se sua responsabilidade. Este agente pode não ser um corretor cheio. Se o sistema de mensagens tem garantias de entrega básicos, o agente local ainda vai precisar de tamponamento persistente de mensagens até que sejam entregue a um corretor real.

Outras dicas

Se você realmente não pode dar ao luxo de perder mensagens que eu recomendaria a implementação de um padrão de mensagens confiável nos pontos finais, se puder, ou seja, o remetente reenvia Se nenhuma confirmação for recebida dentro de um determinado período de tempo e o receptor tem duplicado detecção de lidar com recebendo a mesma mensagem mais de uma vez.

Entrega garantida vem com uma sobrecarga de desempenho e, geralmente, não dá qualquer garantia quanto à quanto tempo a sua mensagem pode levar para chegar lá.

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