Я пишу трансформатор, который, между прочим, должен установить некоторый контент в сообщении на основе того, есть ли сообщения в ожидаемой очереди в ActiveMQ.Mule с использованием JMS-коннектора в трансформаторе
Есть ли способ передать jms: activemq-connector в код трансформатора и сделать вызовы против него в методе transformMessage(), чтобы получить счет очереди?
Edit:
Я нашел способ, чтобы получить к разъему с помощью MuleContext, но я не вижу результатов, которые я ожидать; очередь всегда кажется пустой. Я загрузил очередь, а затем запускал поток, который вызывал трансформатор. В начале этого трансформатора у меня было следующее:.
public Object transformMessage(MuleMessage message, String outputEncoding)
throws TransformerException
{
MuleContext context = message.getMuleContext();
MuleRegistry registry = context.getRegistry();
JmsConnector connector = (JmsConnector)registry.lookupConnector("AMQConnector");
try
{
Session session = connector.getSession(false, false);
Queue queue = session.createQueue("MyQueue");
QueueBrowser browser = session.createBrowser(queue);
Enumeration enumeration = browser.getEnumeration();
boolean hasMessages = enumeration.hasMoreElements();
System.out.println("Value is: " + hasMessages);
}
catch (Exception e)
{
}
....
Я вижу, ожидаемое число сообщений выходит ... то есть, если бы я начал с 8 сообщений в очереди, появляется сообщение 8 раз. Однако значение hasMessages всегда ложно.
Я думаю, мой вопрос изменился больше на: «Как мне получить счет очереди из трансформатора Мула?»
Спасибо Давид. Есть потребитель, хотя он однопоточный и довольно медленный. Я не понимал, что предварительная выборка ActiveMQ сделает сообщения невидимыми для браузера очереди. Поскольку вы говорите, что подход правильный, я потрачу немного времени на то, чтобы отключить пользователя и посмотреть, что я вижу. Благодарю. – Tad