レスポンストランスフォーマのJavaクラスを使用してこれを行うことができます。この前に必ずobjectToJmsトランスフォーマーを配置してください。
import javax.jms.JMSException;
import javax.jms.Message;
import org.apache.commons.lang.StringUtils;
import org.mule.api.MuleMessage;
import org.mule.api.transformer.TransformerException;
import org.mule.api.transport.PropertyScope;
import org.mule.transformer.AbstractMessageTransformer;
public class ExtractJmsMessageIdTransformer extends AbstractMessageTransformer {
@Override
public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException {
if (message.getPayload() instanceof Message) {
Message jmsMessage = (Message) message.getPayload();
String jmsMessageId = null;
try {
jmsMessageId = jmsMessage.getJMSMessageID();
logger.info("Found JmsMessage as payload. jmsMessageId = " + jmsMessageId)
} catch (final JMSException e) {
throw new TransformerException(this, e);
}
}
return message;
}
}コメント
あなたはあなたの応答の変圧器のExtractJmsMessageIdTransformerクラスを定義していないパー
EDIT1。あなたのラバ-config.xmlに以下の
<custom-transformer class="mypack.ExtractJmsMessageIdTransformer" name="extractJmsMessageIdTransformer"/>
<jms:object-to-jmsmessage-transformer name="objectToJms" />
が、私はそれが入力からログインしている、ヌルIDを取得し、この
<jms:outbound-endpoint exchange-pattern="request-response" disableTemporaryReplyToDestinations="true" queue="sample" connector-ref="JMS"
doc:name="JMS" transformer-refs="objectToJms" responseTransformer-refs="objectToJms extractJmsMessageIdTransformer"/>
<logger level="INFO" doc:name="Logger" message="#[message.outboundProperties]"/>
のようなあなたのJMSキューを定義に追加しますか? 私のXMLは以下の通りです: ' "INFO" doc:name = "Logger" message = "#[message.outboundProperties]" /> '
出力ログは以下の通りです。 mypack.ExtractJmsMessageIdTransformer:ペイロードとしてJmsMessageが見つかりました。 jmsMessageId = null。 – Kepler186f
お返事ありがとうございます。私のフォーマットの応答が悪いので申し訳ありませんが、私はまだチューニングしています。上記のコードをチェックし、修正が必要な場所を教えてください。 – Kepler186f
基本的には、TIBCO EMSで一方向または要求応答交換パターンを使用するか、NullPayloadを取得するだけで、JMSMessageIDは取得されません。ミュールフローのコンフィギュレーション終了かTIBCO EMSだけで何かが欠けていますか?基本的なTIBCO JMSフローが即座に応答スキーマでmessageidを取得するので、私はTIBCO EMSでそれを要求できません。また、サンプルのJavaコードで試してみましたが、実際に送信されたメッセージのJMSMessageIDを取得するのに成功しました。ミュールのフローは取得できません。設定/コードの他の提案はどうぞよろしいですか?前もって感謝します。 – Kepler186f