我有一个长时间运行的进程,它会唤醒、执行某些任务,并且可能需要也可能不需要通过 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/