在逻辑应用上将splitOn与服务总线触发器一起使用时,如何保留消息标头

时间:2018-07-27 01:57:04

标签: azureservicebus azure-logic-apps

在Logic App工作流程中,我试图将带有splitOn的Service Bus触发器(主题订阅/ Peek-Lock)用于分批处理。但是,启用splitOn后,我无法获得服务总线消息头(属性)。

在获得和未获得splitOn的情况下,我得到的原始对象下面。

没有splitOn ,我将获得所有OOTB和自定义属性/标题

"body": {
    "ContentData": "Y3VyaW9zaXR5IGtpbGxlZCB0aGUgY2F0IDop",
    "ContentType": "text/plain",
    "ContentTransferEncoding": "Base64",
    "Properties": {
        "Prop1": "Val1",
        "Prop2": "Val2"
    },
    "MessageId": "123",
    "To": null,
    "ReplyTo": null,
    "ReplyToSessionId": null,
    "Label": null,
    "ScheduledEnqueueTimeUtc": "0001-01-01T00:00:00Z",
    "SessionId": null,
    "CorrelationId": "ab05843a-aa00-4d05-9b58-c0723a786b4c",
    "SequenceNumber": 5,
    "LockToken": "abb0f31c-8693-4f77-a516-e575b686ffbc",
    "TimeToLive": "315360000000000"
}

使用splitOn 时,属性/标题不再可用。

"body": {
    "$content-type": "application/xml;charset=utf-8",
    "$content": "Y3VyaW9zaXR5IGtpbGxlZCB0aGUgY2F0IDop"
}   

使用服务总线触发器和splitOn时是否可以保留这些属性?

我知道我可以在工作流程中使用forEach,但如果可能的话,我希望使用splitOn。

1 个答案:

答案 0 :(得分:0)

产品团队确认设计不支持此功能。当我们使用带有splitOn的Service Bus单一触发器(当在主题订阅(窥视锁)中接收到消息)时,我们在工作流中接收到的消息(基于splitOn路径的子消息)与原始消息不同。服务总线。因此,标头属性不会保留。

此问题的解决方法是在工作流中使用ForEach,因此我们可以访问原始消息的属性。

HTH