アウトバウンドjmsメッセージ(キューまたはトピックのいずれか)に特定のアウトバウンドプロパティを含めたいのですが。それを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 に答える