我有一个长时间运行的进程,它会唤醒、执行某些任务,并且可能需要也可能不需要通过 MessageSender 将消息发布到 Azure 服务总线。如果我可以使 MessageSender 成为单例,那会稍微简化我的代码,所以我希望它可行。

澄清一下,我预计这个过程可能会持续很长时间(至少几小时,可能是几天)而不向服务总线发送任何消息。

super 简化的例子:

public async Task WorkLoop(CancellationToken token)
{
    while (!token.IsCancellationRequested)
    {
        var result = DoWork();
        if (result.shouldPublish)
        {
            var message = buildMessage(result);
            await _messageSender.SendAsync(message);
        }
        await Task.Delay(sleepDuration, token);
    }
}

MessageSender 实例长时间保持事件状态(至少几天,可能几周或几个月)有什么后果吗?

最佳答案

根据 Best Practices for performance improvements using Service Bus Messaging :

关于c# - Azure ServiceBus MessageSender 类在长期进程中作为单例运行是否安全?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55582125/

10-11 22:14