ActiveMQ - delete VirtualTopic quando Consumidores = zero

1

Estou tentando implementar um novo aplicativo usando o JMS no activeMQ 5.8.0. Existem vários aplicativos configurados como Produtores (isto é, para descarregar mensagens em um MQ), dois tópicos e, em seguida, os Consumidores são configurados para examinar seu VirtualTopic que é criado dinamicamente no início do servidor Tomcat.

O fluxo de exemplo seria:

Producer1 (Tomcat) --JMS--> ActiveMQ.VirtualTopic

Consumer.VirtualTopic1 --JMS--> Consumer1 (Tomcat)
Consumer.VirtualTopic2 --JMS--> Consumer2 (Tomcat)

Queríamos a flexibilidade de poder inicializar qualquer número de consumidores e enviar dinamicamente o ActiveMQ para eles. Isso está funcionando. No entanto, quando um servidor Consumidor é encerrado (como resultado de não ser mais necessário, falha do servidor, interrupção de rede, etc.), eu quero que o AMQ pare de colocar mensagens em seu VirtualTopic quando o controle de fluxo está sendo ativado e não está mais consumindo mensagens do Produtor.

Eu tenho meu activemq.xml configurado com:

<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}" schedulePeriodForDestinationPurge="10000">

<policyEntry queue=">"  gcInactiveDestinations="true"  inactiveTimoutBeforeGC="30000" />

Espero, portanto, que um servidor seja marcado como inativo dentro de 40 segundos de um nó do Tomcat sendo interrompido (e o número de consumidores sendo marcado como zero), mas isso não está acontecendo. Eu perdi alguma coisa?

Obrigado!

    
por damian 24.07.2015 / 13:55

1 resposta

0

Eu mesmo encontrei a resposta com um pouco mais de familiaridade com o ActiveMQ. A fila é excluída automaticamente, mas somente se não houver mensagens pendentes. A aplicação desta solução foi implementada para lidar com um fluxo constante de mensagens (algo entre 20 - 5000 por segundo), portanto, nunca há uma janela para a fila ser removida.

    
por 24.03.2016 / 12:18