/ Persistência de mensagem no tópico - jms, activemq

Persistência de mensagens no tópico - jms, activemq

Eu questionei se uma mensagem persistiria em um tópico ou não e obtive a maior parte da minha resposta de esta postagem.

Mas como sobre esta situação - suponha que o corretor tenhacomeçou fresco, e alguns editores começaram a enviar mensagens para um tópico, agora no futuro algum assinante durável vai se conectar com este tópico mas atualmente não há nenhum assinante durável então no caso do broker reiniciar todas as mensagens enviadas pelo editor para esse tópico até agora será perdido?

Eu tentei acima da situação e, na verdade, todas as mensagensPerdidos. Além disso, eu tentei esta situação - eu tinha um assinante durável ativo e era capaz de obter mensagens enviadas para o tópico, então ele caiu e enquanto isso mais mensagens foram enviadas para o tópico, então o broker reiniciou e no final todas aquelas mensagens delta Perdidos.

Então, isso basicamente significa que no caso de TOPICmensagem não pode ser persistente porque ao contrário da resposta naquele post que eu mencionei anteriormente, ter um assinante durável não tem efeito porque se houver um assinante ativo durável então a mensagem será imediatamente consumida por ele, e se não houver nenhum assinante ativo e durável o corretor reinicia, então as mensagens estão se perdendo.

Então, a linha de fundo é que no caso de mensagem TOPIC não pode ser persistente ou estou errado no meu entendimento / testes?

Respostas:

1 para resposta № 1

Um pouco de clareza é necessário aqui.

1) Corretor sem assinantes - Todas as mensagens são descartadas pelo corretor.

2) Broker com assinante durável on-line - As mensagens (persistentes e não persistentes) são entregues ao armazenamento do assinante, normalmente uma fila, que é então consumida pelo assinante.

3) Corretor com assinante durável off-line -As mensagens (persistentes e não persistentes) são entregues ao armazenamento do assinante. Se o intermediário ficar inativo, todas as mensagens não persistentes serão perdidas. No entanto, todas as mensagens persistentes serão recuperadas quando o agente for reiniciado.

4) Corretora com assinante on-line não durável -Mensagens (persistentes e não persistentes) são entregues ao consumidor. Se o assinante ficar off-line, nenhuma mensagem será entregue ao consumidor e nenhuma mensagem será armazenada em cache pelo intermediário.

O IBM MQ fornece uma opção, chamada Retain Publication, para manter uma cópia da última mensagem publicada em um tópico. Desta forma, todos os participantes tardios receberão esta última mensagem.


2 para resposta № 2

Para um início de corretor limpo onde não háassinaturas duráveis ​​off-line no Tópico em questão, o intermediário não persiste mensagens, mesmo que elas sejam enviadas com o modo de entrega de Persistente. Se você incluir uma mensagem de assinatura durável enviada como persistente será gravada no armazenamento e se a assinatura durável estiver off-line, ela será retida até ser consumida ou removida se houver um consumidor de assinatura durável que esteja lendo e confirmando-os.

Se você não estiver enviando a mensagem com omodo de entrega de Persistente, em seguida, eles nunca serão persistidos, mesmo se houver uma assinatura durável existente. E uma vez que a assinatura durável é cancelada, o corretor volta a não armazenar as mensagens do Tópico, mesmo que elas estejam marcadas como persistentes.

Dado o comportamento que você está vendo, o melhor palpite é que seu modo de entrega no envio não é persistente.