0

我们在单个 Functions.cs 文件中有由多种方法组成的 webjobs。他们在主题/队列上有服务总线触发器。因此,请继续收听 brokeredMessage 的主题/队列。一旦消息到达,我们就有了一个处理逻辑来做很多事情。但是,我们有时会发现,所有的 webjobs 都会突然重新初始化。我在网站上发现很少有文章说 webjobs 确实被初始化了,而且这很常见。

但是,不确定这是否是唯一的方法,我们是否可以阻止它重新初始化,因为我们一得到 brokeredMessage.Complete 就调用它,因为我们不希望它一次又一次地继续处理?

此外,我们在一个应用服务中的 webjobs 很少,而在其他应用程序服务中的 webjobs 很少。而且,我们发现来自两个应用服务的所有 webjobs 都会同时重新初始化。不确定,为什么?

4

1 回答 1

0

您应该将您的流程设计为能够处理偶尔的断开连接和故障,因为这是一个“功能”或存在于云中的应用程序。

使用事务来管理代码的关键区域。

下面的伪/注释代码,以及指向 Microsoft 文档的链接在这里

var msg = receiver.Receive();

using (scope = new TransactionScope())
{
    // Do whatever work is required
    // Starting with computation and business logic.

    // Finishing with any persistence or new message generation, 
    // giving your application the best change of success. 
    // Keep in mind that all BrokeredMessage operations are enrolled in 
    // the transaction. They will all succeed or fail. 
    // If you have multiple data stores to update, you can use brokered messages 
    // to send new individual messages to do the operation on each store,
    // giving eventual consistency. 

    msg.Complete(); // mark the message as done 
    scope.Complete(); // declare the transaction done
} 
于 2018-01-05T09:22:20.467 回答