微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ActiveMQ 到序列

如何解决ActiveMQ 到序列

我正在尝试编写一个自定义突触处理程序来记录传入请求和对 wso2carbon.log 的相应响应 - 我已经完成了,但是我无法记录相同的 UUID 一旦请求从消息队列 ActiveMQ 返回到目标序列中,我就会对其进行初始化。

我的意思是我收到一个请求 - 我创建了一个 UUID - 我记录它并保存它 - 在响应时我也记录它 - 我将它保存在传输标头的原始上下文中,我希望当我从 Active MQ 获取它时记录它,但消息进入一个序列并且似乎没有被 handleRequestInFlowhandleResponseInFlow?可以做什么?

在处理程序中,我使用“extends AbstractSynapseHandler”来启动日志记录过程。

这是处理程序的代码

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;
}
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。