1

アウトバウンドjmsメッセージ(キューまたはトピックのいずれか)に特定のアウトバウンドプロパティを含めたいのですが。それを1か所で(たとえば、コネクタレベルで)述べることは可能ですか?

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 に答える