You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MQ转HTTP Reply时返回‘Need return context info’错误的技术求助

问题分析与解决方案

问题描述

业务流程:仅向外部MQ发送BLOB消息,对方将BLOB消息回复至本地队列;本地队列获取消息后格式化为JSON,通过HTTP Reply返回,需从回复的BLOB前8位提取httpId返回。当前流程为MQ node → Compute node → HTTP Reply → Log node,日志显示HTTP Reply返回错误:'Need return context info'。

当前Compute节点代码:

BROKER SCHEMA response Path shared;

CREATE COMPUTE MODULE PolicyUpdateResponse
    CREATE FUNCTION Main() RETURNS BOOLEAN
    BEGIN
        
        DECLARE httpId BLOB SUBSTRING(CAST(InputRoot.BLOB.BLOB AS CHARACTER CCSID 1208) FROM 1 FOR 8);
        SET OutputLocalEnvironment.Destination.HTTP.ReplyIdentifier = CAST(httpId AS BLOB CCSID 1208);
        
        SET OutputRoot.Properties.MessageFormat = '';
        SET OutputRoot.JSON = InputBody;
        
        SET OutputRoot.JSON.Data.Status = 'Success';
        SET OutputRoot.JSON.Data.Message = CAST(InputRoot.BLOB.BLOB AS CHARACTER CCSID 1208);       
        RETURN TRUE;
    END;            

END MODULE;

错误原因

'Need return context info'错误核心在于HTTP Reply节点无法匹配到关联的原始HTTP请求上下文,具体问题点:

  1. httpId提取逻辑错误:先将BLOB转字符再截取、转回BLOB的操作会破坏原始二进制数据完整性,导致提取的标识与原始HTTP请求的ReplyIdentifier不匹配
  2. ReplyIdentifier设置不符合要求:错误的转换导致最终设置的标识无法被HTTP Reply节点识别为有效请求上下文

解决方案

1. 修正httpId提取逻辑

直接截取BLOB的前8位二进制数据,跳过不必要的字符转换,保证数据完整性:

DECLARE httpId BLOB SUBSTRING(InputRoot.BLOB.BLOB FROM 1 FOR 8);

2. 修正后的完整Compute代码

BROKER SCHEMA response Path shared;

CREATE COMPUTE MODULE PolicyUpdateResponse
    CREATE FUNCTION Main() RETURNS BOOLEAN
    BEGIN
        -- 直接提取BLOB前8位作为httpId,保留原始二进制数据
        DECLARE httpId BLOB SUBSTRING(InputRoot.BLOB.BLOB FROM 1 FOR 8);
        -- 正确设置ReplyIdentifier,匹配原始HTTP请求的标识
        SET OutputLocalEnvironment.Destination.HTTP.ReplyIdentifier = httpId;
        
        SET OutputRoot.Properties.MessageFormat = '';
        SET OutputRoot.JSON = InputBody;
        
        SET OutputRoot.JSON.Data.Status = 'Success';
        -- 若需展示BLOB内容,确保字符转换编码正确
        SET OutputRoot.JSON.Data.Message = CAST(InputRoot.BLOB.BLOB AS CHARACTER CCSID 1208);       
        RETURN TRUE;
    END;            
END MODULE;

3. 额外检查项

  • 验证MQ节点接收的消息前8位确实是原始HTTP请求的ReplyIdentifier二进制值(可通过MQ Explorer查看消息内容确认)
  • 检查HTTP Reply节点配置,确保启用“从LocalEnvironment获取ReplyIdentifier”的选项,避免节点使用默认上下文查找逻辑
  • 确认流程中无其他节点修改或清除LocalEnvironment中的HTTP相关上下文

内容的提问来源于stack exchange,提问作者Euphoria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 09:00:14