Java ActiveMQ之后的WSO2 Synapse处理程序HandlerRequestInFlow到序列
我正在尝试编写一个定制的synapse处理程序来记录传入的请求和对wso2carbon.log的相应响应,我已经完成了这项工作,但是,当请求从消息队列ActiveMQ返回到目标序列时,我很难将相同的UUID记录到日志中 我的意思是我得到一个请求-我创建一个UUID-我记录并保存它-在响应时我也记录它-我将它保存在传输头的原始上下文中,我希望在我从活动MQ获取它时记录它,但是消息进入一个序列,并且似乎没有被HandlerRequestInFlow和HandlerResponseInFlow?可以做些什么 在处理程序中,我使用“扩展AbstractSynapseHandler”来启动日志记录过程 这是处理程序的代码:Java ActiveMQ之后的WSO2 Synapse处理程序HandlerRequestInFlow到序列,java,wso2,wso2esb,axis2,wso2carbon,Java,Wso2,Wso2esb,Axis2,Wso2carbon,我正在尝试编写一个定制的synapse处理程序来记录传入的请求和对wso2carbon.log的相应响应,我已经完成了这项工作,但是,当请求从消息队列ActiveMQ返回到目标序列时,我很难将相同的UUID记录到日志中 我的意思是我得到一个请求-我创建一个UUID-我记录并保存它-在响应时我也记录它-我将它保存在传输头的原始上下文中,我希望在我从活动MQ获取它时记录它,但是消息进入一个序列,并且似乎没有被HandlerRequestInFlow和HandlerResponseInFlow?可以做
package org.wso2.handler.synapse;
import org.apache.commons.lang3.StringUtils;
import org.apache.synapse.AbstractSynapseHandler;
import org.apache.synapse.MessageContext;
import org.apache.synapse.core.axis2.Axis2MessageContext;
import org.slf4j.MDC;
import java.util.Map;
import java.util.UUID;
public class MessageIDHandler extends AbstractSynapseHandler {
private static final String TransactionUUID = "TransactionUUID";
private static final String LOG_KEY = "messageId";
@SuppressWarnings("unchecked")
public boolean handleRequestInFlow(MessageContext messageContext) {
org.apache.axis2.context.MessageContext axis2MC;
axis2MC = ((Axis2MessageContext) messageContext).
getAxis2MessageContext();
Map<String, String> headers = (Map<String, String>) axis2MC.getProperty(org.apache.axis2.context.MessageContext.TRANSPORT_HEADERS);
String messageId = headers.get("X-Transaction-ID");
if(StringUtils.isEmpty(messageId)){
messageId = UUID.randomUUID().toString();
headers.put("X-Transaction-ID", messageId);
}
messageContext.setProperty(TransactionUUID, messageId);
MDC.put(LOG_KEY, messageId + " - REQUEST");
return true;
}
public boolean handleRequestOutFlow(MessageContext messageContext) {
return true;
}
public boolean handleResponseInFlow(MessageContext messageContext) {
MDC.put(LOG_KEY, String.valueOf(messageContext.getProperty(TransactionUUID)) + " - RESPONSE");
return true;
}
public boolean handleResponseOutFlow(MessageContext messageContext) {
return true;
}
}
package org.wso2.handler.synapse;
导入org.apache.commons.lang3.StringUtils;
导入org.apache.synapse.AbstractSynapseHandler;
导入org.apache.synapse.MessageContext;
导入org.apache.synapse.core.axis2.Axis2MessageContext;
导入org.slf4j.MDC;
导入java.util.Map;
导入java.util.UUID;
公共类MessageIDHandler扩展了AbstractSynapseHandler{
私有静态最终字符串TransactionUUID=“TransactionUUID”;
私有静态最终字符串日志\u KEY=“messageId”;
@抑制警告(“未选中”)
公共布尔handleRequestInFlow(MessageContext MessageContext){
org.apache.axis2.context.MessageContext axis2MC;
axis2MC=((Axis2MessageContext)messageContext)。
getAxis2MessageContext();
Map headers=(Map)axis2MC.getProperty(org.apache.axis2.context.MessageContext.TRANSPORT_headers);
字符串messageId=headers.get(“X-Transaction-ID”);
if(StringUtils.isEmpty(messageId)){
messageId=UUID.randomUUID().toString();
headers.put(“X-Transaction-ID”,messageId);
}
setProperty(TransactionUUID,messageId);
put(LOG_键,messageId+“-REQUEST”);
返回true;
}
公共布尔handleRequestOutFlow(MessageContext MessageContext){
返回true;
}
公共布尔HandlerResponseInFlow(MessageContext MessageContext){
put(LOG_KEY,String.valueOf(messageContext.getProperty(TransactionUUID))+“-RESPONSE”);
返回true;
}
公共布尔HandlerResponseOutflow(MessageContext MessageContext){
返回true;
}
}