库名称和版本
Azure.Messaging.ServiceBus 7.10.0
描述bug
我们尝试用两种不同的方式修改消息死信的元数据:
1.使用以下方法修改自定义属性。DeadLetterMessageAsync(ServiceBusReceivedMessage message,IDictionary〈string,object〉propertiesToModify = default,CancellationToken cancellationToken = default)我们已经创建了一个自定义字典,其中包含要在字典中修改的属性,并将其传递给上面的参数。(键,值)得到反映。
然而,当尝试从死信队列接收消息作为ServiceBusReceivedMessage并检查applicationProperties字段时,字典(ApplicationProperties)根本没有任何键值对。
1.我们还尝试了另一种方法DeadLetterMessageAsync(ServiceBusReceivedMessage message,string deadLetterReason,string deadLetterErrorDescription = default,CancellationToken cancellationToken = default)我们用某个消息修改了ErrorDescription,并对其进行了deadLettering。Post在接收消息时,它根本没有deadLetterErrorDescription。从库源代码来看,看起来deadLetterErrorDescription字段是从ApplicationProperties中提取的,该字段又是空的。
预期行为
在场景#1和#2中,我们都希望接收到的消息中的applicationProperties与门户中显示的自定义属性相结合。
实际行为
ServiceBusReceivedMessage中的ApplicationProperties字段为空。
复制步骤
向死信队列发送一条带有错误描述的消息,并尝试从死信队列接收消息。尝试从applicationProperties读取是否有任何键。
在github空间也提到了这个:https://github.com/Azure/azure-sdk-for-net/issues/35443
编辑:这是一个错误的标注。在任何版本中都没有错误。
1条答案
按热度按时间9w11ddsr1#
当消息是死信时,消息连同死信的原因和错误描述一起被移动到死信队列。
dead-letter reason
和error description
被添加到消息属性中。谢谢@
Sean Feldman
的评论。您需要安装NuGet
Azure.Messaging.ServiceBus -Version 7.13.1
我尝试了下面的方法,并能够读取属性。
插入消息到服务总线队列,并读取消息,并使用以下代码将其移动到死信队列。
读取消息的示例代码。
用C#编写代码以读取属性。
死信队列属性。