在 C# 中使用 ServiceBusOutput-outputbinding 时,可以在 ServiceBusMessage 上设置 ApplicationProperties/CustomProperties 吗?

问题描述 投票:0回答:1

我在 C# 函数中使用 ServiceBusOutput,但我需要在我发送的消息上设置 ApplicationProperty,因为主题订阅使用它来将消息过滤到相关订阅。但是,当我使用 ServiceBusMessage 对象作为返回对象并在其上设置 ApplicationProperty 时,整个 ServiceBusMessage 都会用作主体。这不是期望的结果,因为我希望我的原始正文(传递给 ServiceBusMessage)作为消息正文。当我将正文作为返回对象传递时,消息正文是正确的,但据我所知,我无法设置 ApplicationProperties(无法在 ServiceBusOutput 属性中传递它们)。

我是否遗漏了什么,或者在使用输出绑定时无法添加 ApplicationProperties?

var message = new ServiceBusMessage("body");
message.ApplicationProperties.Add("Type", "Type1");

return message;
c# azure function azure-functions servicebus
1个回答
0
投票

我已经在我的环境中重现了,以下是我的预期结果:

Function.cs:

using System;
using System.Text;
using Azure.Messaging.ServiceBus;
using Microsoft.Azure.ServiceBus;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace FunctionApp82
{
    public class Function1
    {
        [FunctionName("Function1")]
        public static void Run([ServiceBusTrigger("myqueue", Connection = "connec")]string myQueueItem, ILogger log, [ServiceBus("rithwikqueue", Connection = "connec")] out Message message)
        {
            log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
            message = new Message(Encoding.UTF8.GetBytes(myQueueItem));
            message.UserProperties.Add("sender", "Chotu");


        }
    }
}

Output:

enter image description here

enter image description here

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.