我在 C# 函数中使用 ServiceBusOutput,但我需要在我发送的消息上设置 ApplicationProperty,因为主题订阅使用它来将消息过滤到相关订阅。但是,当我使用 ServiceBusMessage 对象作为返回对象并在其上设置 ApplicationProperty 时,整个 ServiceBusMessage 都会用作主体。这不是期望的结果,因为我希望我的原始正文(传递给 ServiceBusMessage)作为消息正文。当我将正文作为返回对象传递时,消息正文是正确的,但据我所知,我无法设置 ApplicationProperties(无法在 ServiceBusOutput 属性中传递它们)。
我是否遗漏了什么,或者在使用输出绑定时无法添加 ApplicationProperties?
var message = new ServiceBusMessage("body");
message.ApplicationProperties.Add("Type", "Type1");
return message;
我已经在我的环境中重现了,以下是我的预期结果:
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: