我希望我的出站 jms 消息(到队列或主题)包含某些出站属性。是否可以在一个地方(例如,在连接器级别)说明这一点?
问问题
945 次
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 回答