Tento obter uma única mensagem de Artemis através do Jolokia JMX, mas não consigo encontrar uma maneira de filtrar por JMSMessageID
.
Versão do corretor: Red Hat AMQ 7.11.7
Minha melhor tentativa atualmente é:
https://broker/console/jolokia/exec/org.apache.activemq.artemis:broker=!%22amq-broker!%22,component=addresses,address=!%22ExpiryQueue!%22,subcomponent=queues,routing-type=!%22anycast!%22,queue=!%22ExpiryQueue!%22/browse(java.lang.String)/JMSmessageID=!%2215232235223!%22
Ele chama o browse(String filter)
método em QueueControl
, com o argumento JMSmessageID="15232235223"
, mas o filtro não funciona. Quando executo essa requisição, eu só pego todas as mensagens da fila.
Quando omito as aspas duplas ao redor do ID da mensagem, não obtenho resultados.
Li em outra resposta que a filtragem de cabeçalhos de mensagens não é possível (apenas para propriedades), o que parece estranho.
No entanto, alguma sugestão de como obter uma única mensagem por ID de mensagem? Obrigado
Há algumas coisas que precisamos ter em mente aqui...
JMSMessageID
deve ser suficiente para isso. Isso é representado como "ID do usuário" no console da web.JMSMessageID
em uma consulta funcionaria se você estivesse usando um cliente JMS. No entanto, o console da web do ActiveMQ Artemis não usa um cliente JMS ao navegar por mensagens. Ele simplesmente usa a Core API . Portanto, você precisa usar uma expressão de filtro principal , a saberAMQUserID
.JMSMmessageID
requer começarID:
conforme observado no JavaDoc ."
). Você deve usar aspas simples (ie'
) em vez disso. Conforme observado no JavaDoc relevante :Juntando tudo isso...Algo assim deve funcionar para você: