Jas*_*ond 4 c# azureservicebus azure-functions
我正在创建一个作为 ServiceBus 触发器的 Azure 函数。
[FunctionName("RetryRack")]
public async Task Run([ServiceBusTrigger("%RackIntegration:topic%", "%RackIntegration:subscription%")] ServiceBusReceivedMessage sbMessage, ILogger log, MessageReceiver messageReceiver)
Run Code Online (Sandbox Code Playgroud)
我正在使用 Azure.Messaging.ServiceBus (7.6.0)。
当我使用同一库中的 ServiceBusMessage 发送消息时,我在消息中发送了几个自定义属性。我可以在 SB Explorer 中看到这些自定义属性,因此我知道它们设置正确。
现在,当我在函数中收到消息时,ApplicationProperties 为空。
谁能帮我弄清楚为什么当我知道从 SB Explorer 中正确设置了自定义属性时,当我收到消息时自定义属性没有被填充?
仅供参考,我在发送消息时设置了这样的属性。
message.ApplicationProperties.Add("@message.event","eventName");
Run Code Online (Sandbox Code Playgroud)
这是我用来发送消息的方法
public async Task SendMessage<T>(T messageObject)
{
ServiceBusMessage message = new ServiceBusMessage(JsonConvert.SerializeObject(messageObject));
message.ApplicationProperties.Add(MessageProperties.Event, "RackIntegration");
message.ApplicationProperties.Add(MessageProperties.Plant, "CNW");
try
{
await sender.SendMessageAsync(message);
}
finally
{
await sender.DisposeAsync();
await client.DisposeAsync();
}
}
Run Code Online (Sandbox Code Playgroud)
一旦服务总线触发器收到消息,我就会尝试获取这样的自定义属性
string prop1 = receivedMessage.ApplicationProperties[MessageProperties.Event].toString();
Run Code Online (Sandbox Code Playgroud)
正如我在上面的屏幕打印中所示,当函数触发器检索消息时,ApplicationProperties 集合为空。
我编写了一个小型控制台应用程序来使用 ServiceBusProcessor 手动接收消息。当我这样做时,ApplicationProperties 已正确填充。
所以看来这是 Function ServiceBus 触发器的问题......也许?
Jas*_*ond 10
显然,为了使用Azure.Messaging.ServiceBusNuget 包,您必须将其更新Microsoft.Azure.WebJobs.Extensions.ServiceBus到 5.x。
当我创建项目时,它安装了该软件包的 4.1.0 版本。我将其更新到最新的 5.2.0,现在一切正常。
谢谢
| 归档时间: |
|
| 查看次数: |
6396 次 |
| 最近记录: |