这个问题与其他答案类似,但是我认为AF v2可能会改变一切(我没有v1经验就跳入v2)。似乎与AF v2集成以与ServiceBus进行交互的程序集是Microsoft.Azure.ServiceBus,它具有一个名为“ Message”的类,该类与在其他Microsoft Servicebus程序集中发现的“ BrokeredMessage”并不完全相同。两者之间的一个主要区别是BrokeredMessage(几乎在所有文档,示例以及我可以在其中找到的任何其他线程中都引用过)上面具有.Deadletter()方法,而Message没有。当我无法访问收到邮件的客户端或接收方时,如何故意对邮件添加邮件?
(我已经看到了一些建议,这些建议仅与克隆消息,放入我自己的“死信”队列以及让AF提交原始邮件有关-我认为这不是一个适当的解决方案。)
答案 0 :(得分:3)
很难找到答案,因为它仍然没有记录。 Azure SDK for .NET项目自述文件上的API参考甚至指向旧命名空间?♂️
中的文档我必须搜索源代码以找到获取LockToken的正确方法。
[FunctionName("MyFunction")]
public static async Task Run([ServiceBusTrigger("myqueue", Connection = "myconnectionstring")] Message message,
ILogger log, MessageReceiver messageReceiver)
{
await messageReceiver.DeadLetterAsync(message.SystemProperties.LockToken);
}
将MessageReceiver设置为带有自动绑定参数的参数,无需其他设置。
答案 1 :(得分:2)
我还没有在函数环境中证明它,但是根据我在github(https://github.com/Azure/azure-webjobs-sdk/issues/1986)上打开的通知单,webjobs v3支持绑定在函数触发器中接收到它的Message和MessageReceiver,并且然后可以使用MessageReceiver对消息进行死信。