我正在编写一个转换器,除其他外,它需要根据 ActiveMQ 中的给定队列中是否有待处理的消息在消息上设置一些内容。
有没有办法将 jms:activemq-connector 传递到转换器代码中并在 transformMessage() 方法中对其进行调用以获取队列计数?
编辑:
我找到了一种使用 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 的值始终为 false。
我想我的问题已经变成了“如何从 Mule 变压器中获取队列数量?”