我有這段代碼可以將訊息放入佇列
public class AzureQueueService : IAzureQueueService
{
private readonly IConfiguration _config;
private static string azureServiceBusString = null;
public AzureQueueService(IConfiguration config)
{
_config = config;
azureServiceBusString = "connString";
}
public async Task SendMessageAsync<T>(T serviceBusMessage, string queueName)
{
// since ServiceBusClient implements IAsyncDisposable we create it with "await using"
await using var queueClient = new ServiceBusClient(azureServiceBusString);
// create the sender
ServiceBusSender sender = queueClient.CreateSender(queueName);
string messageBody = JsonSerializer.Serialize(serviceBusMessage);
var message = new ServiceBusMessage(Encoding.UTF8.GetBytes(messageBody));
// send the message
await sender.SendMessageAsync(message);
}
}
在我的啟動檔案中,我正在這樣做
services.AddTransient<IAzureQueueService, Core.Services.AzureQueueService>();
我正在這樣使用它
var queue = new AzureQueueService(config);
await queue.SendMessageAsync(message, "emailqueue");
這會導致記憶體泄漏嗎?我的意思是我應該在建構式中實體化 ServiceBusClient 嗎?
uj5u.com熱心網友回復:
是的,我希望為 ServiceBusClient 設定依賴注入。根據此處的檔案(對于 7.8.x)
ServiceBusClient、發送方、接收方和處理器可以安全地快取并在應用程式的整個生命周期內作為單例使用,這是定期發送或接收訊息時的最佳實踐。他們負責有效管理網路、CPU 和記憶體的使用,努力在不活動期間保持低使用率。
此外,請參閱使用服務總線訊息傳遞提高性能的最佳實踐
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/492651.html
上一篇:AzureEventhub消費者
