如何为Azure Logic App的Service Bus队列添加iothub-enqueuedtime自定义属性
解决Logic App传递IoT Hub enqueuedtime到Service Bus自定义属性的问题
先确认头部值可正常获取
先确保接收方Logic App能拿到这个头部值:在HTTP触发器之后加一个Compose步骤,输入表达式:
@triggerOutputs()['headers']['iothub-enqueuedtime']
运行测试查看Compose输出,确认能正确拿到时间值。如果这里拿不到,先排查跨租户/订阅Logic App的HTTP请求是否正确传递了头部。
配置Service Bus发送动作的自定义属性
在Send message to Service Bus queue动作中,展开Advanced options(高级选项),找到Custom Properties区域:
- 点击Add new添加属性
- Name填
iothub-enqueuedtime(和传递的头部名称完全匹配,注意大小写) - Value填表达式:
如果之前用Compose步骤存过这个值,也可以用@triggerOutputs()['headers']['iothub-enqueuedtime']@outputs('Compose')(替换成你的Compose步骤名称)
常见问题排查
- 表达式必须以
@开头,否则会被当成静态字符串,不会解析成实际的头部值 - 头部名称大小写要完全匹配,比如发送方传的是
iothub-enqueuedtime,就别写成Iothub-EnqueuedTime - 检查Service Bus连接权限:确保Logic App使用的连接有Send权限,自定义属性是发送消息的标准功能,只要有发送权限就能添加
验证结果
发送消息后,可通过两种方式验证:
- 用Service Bus Explorer查看队列中的消息,在Properties标签下找到自定义属性
iothub-enqueuedtime - 在后续接收Service Bus消息的Logic App中,用表达式
@triggerOutputs()['body']['Properties']['iothub-enqueuedtime']获取该属性值
内容的提问来源于stack exchange,提问作者Damo
相关产品推荐
相关产品推荐

