1

我希望我的出站 jms 消息(到队列或主题)包含某些出站属性。是否可以在一个地方(例如,在连接器级别)说明这一点?

4

1 回答 1

3

为此,您必须:

  • 扩展org.mule.transport.jms.transformers.ObjectToJMSMessage并使其将所需的属性添加到它创建的 JMS 消息中,
  • 将此自定义转换器注册为所考虑的 JMS 连接器的新默认出站转换器:

    <jms:connector name="jmsConnector">
        <service-overrides outboundTransformer="apackage.IpAddingObjectToJMSMessage"/>
    </jms:connector>
    

这是自定义转换器的代码:

package apackage;

import java.net.InetAddress;

import javax.jms.Message;

import org.mule.api.MuleMessage;
import org.mule.api.transformer.TransformerException;
import org.mule.config.i18n.MessageFactory;
import org.mule.transport.jms.transformers.ObjectToJMSMessage;

public class IpAddingObjectToJMSMessage extends ObjectToJMSMessage
{
    @Override
    public Object transformMessage(final MuleMessage message, final String outputEncoding)
        throws TransformerException
    {
        final Message jmsMessage = (Message) super.transformMessage(message, outputEncoding);

        try
        {
            jmsMessage.setStringProperty("IP", InetAddress.getLocalHost().getHostAddress());
        }
        catch (final Exception e)
        {
            throw new TransformerException(
                MessageFactory.createStaticMessage("Failed to add IP address to JMS message"), e);
        }

        return jmsMessage;
    }
}
于 2012-07-18T16:48:51.230 回答