Logic App连接MQ时二进制消息内容取值问题咨询
问题描述
使用Logic App连接MQ轮询消息时,单个队列的消息以Message item binary content格式返回,其余队列消息均为可直接读取文本的Message item content格式,无读取异常。
异常返回结构示例:
{ "$content-type": "application/octet-stream", "$content": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48bnM0aW9uVGV4dD4KICA8L0V4Y2VwdGlvbj4KPC9uczA6UG9saWN5VXBkYXRlPg==" // 截断示例值 }
需要实现Logic App内对上述$content字段有效值的正确提取。
可行解决方法
- 直接使用内置表达式解码
Logic App表达式原生支持base64ToString()方法,直接传入二进制结构的$content字段即可解码得到原始文本,示例表达式:
解码后如果是XML、JSON结构化内容,可直接衔接对应解析动作做后续处理。base64ToString(triggerBody()?['$content']) - 修改MQ连接的消息读取配置
打开工作流中MQ轮询操作的设置面板,找到该异常队列对应的消息接收格式配置项,将默认的Binary读取模式修改为Text,保存配置后重新触发工作流,后续该队列的消息就会和其他正常队列一致,直接返回可读取的文本内容,无需额外转码。 - 配置兼容两种格式的通用逻辑
如果工作流需要同时处理二进制返回、普通文本返回两种场景,可以加一层类型判断自动适配,示例表达式:
逻辑会自动识别返回的内容类型,二进制格式自动做base64转文本,普通文本格式直接透传,不需要针对不同队列单独拆分逻辑分支。if(equals(triggerBody()?['$content-type'], 'application/octet-stream'), base64ToString(triggerBody()?['$content']), triggerBody())
内容的提问来源于stack exchange,提问作者SSR
相关产品推荐
相关产品推荐

