2013-08-20 3 views
1

Я пишу трансформатор, который, между прочим, должен установить некоторый контент в сообщении на основе того, есть ли сообщения в ожидаемой очереди в 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 всегда ложно.

Я думаю, мой вопрос изменился больше на: «Как мне получить счет очереди из трансформатора Мула?»

ответ

2

У Mule нет поддержки OOTB для просмотра в очереди, поэтому ваш подход правильный.

У вас есть активная входящая конечная точка, которая потребляет очередь, которую вы просматриваете в трансформаторе? Если да, возможно, вы получаете false для hasMessages просто потому, что клиент ActiveMQ предварительно предварительно загрузил все сообщения, поэтому браузер очереди не видит.

+0

Спасибо Давид. Есть потребитель, хотя он однопоточный и довольно медленный. Я не понимал, что предварительная выборка ActiveMQ сделает сообщения невидимыми для браузера очереди. Поскольку вы говорите, что подход правильный, я потрачу немного времени на то, чтобы отключить пользователя и посмотреть, что я вижу. Благодарю. – Tad

Смежные вопросы