2015-08-09 42 views
1

我刚开始使用Azure Webjobs发送有关使用我开发的工具完成的成功检查的电子邮件通知。 Webjob由控制器发送的CloudQueueMessage触发。基本上一切工作都很好。Azure Webjobs:重播成功函数行为

但是现在我想知道如何处理Webjobs仪表板中的'Replay Function'按钮:我试图用这个按钮来重播一个成功的CloudQueueMessage(并因此重新发送邮件)。
消息被添加到队列中,并且我的Webjob被触发,但是如果检查CloudQueueMessage,则某些以前设置的属性(如Id和PopReceipt)为空。什么导致这种行为?

我需要Id,因为在我的Webjob中,我使用'UpdateMessage()'来设置消息的处理状态。

回答

2

重放实际上并未入列新消息 - 它将消息的json /字符串正文(显示在Replay UI中)并使您的函数通过“返回通道”调用 - json/string数据用于在内存中构造一个新的队列消息,这就是你的函数被调用的内容。所以只有UI中输入字符串中包含的信息才会传递给你的函数。

请注意,在调用之前,您可以修改消息正文。在播放之前,您可以设置所需的位数吗?

+0

谢谢!这种行为是否记录在某处? 在我的webjob中,我首先发送一封电子邮件,然后创建一个数据库条目。我更新消息以避免在数据库更新期间出现错误时重新发送电子邮件。 CloudQueueMessage.Id对此是必需的。 我认为如果重播消息只在内存中,那么webjob将不会被第二次触发。所以一切都应该没问题。 我将在更新消息之前检查Id和PopReceipt是否为空(表示这是内存中的消息)。 >>'你可以修改邮件正文。' 我想这样设置MessageId是不可能的,是吗? – krombi

+0

我不确定是否有关于此的具体细节,但是有Dashboard文档页面链接到此主页面:https://azure.microsoft.com/en-us/documentation/articles/websites-webjobs-resources/ – mathewc

+0

此外,通过“修改邮件正文”,我指的是重播UI中字符串中的任何数据。如果你绑定了一个POCO,你可以设置JSON属性等,并且你的函数会得到它们。 – mathewc