mirror of
https://github.com/bitwarden/server.git
synced 2025-06-25 13:18:48 -05:00

* [PM-17562] Add Azure Service Bus support for event integration retries * Cleanup AzureServiceBusIntegrationListenerService.cs; add nullable * Removed IntegrationHandlerBase* since it is no longer used (We removed the subclasses previously) * Changed strategy to assume ApplyRetry always gives us a non-null DelayUntilDate; Added test to confirm as well
46 lines
1.3 KiB
C#
46 lines
1.3 KiB
C#
using System.Text.Json;
|
|
using Azure.Messaging.ServiceBus;
|
|
using Bit.Core.Models.Data;
|
|
using Bit.Core.Services;
|
|
using Bit.Core.Settings;
|
|
|
|
namespace Bit.Core.AdminConsole.Services.Implementations;
|
|
|
|
public class AzureServiceBusEventWriteService : IEventWriteService, IAsyncDisposable
|
|
{
|
|
private readonly ServiceBusClient _client;
|
|
private readonly ServiceBusSender _sender;
|
|
|
|
public AzureServiceBusEventWriteService(GlobalSettings globalSettings)
|
|
{
|
|
_client = new ServiceBusClient(globalSettings.EventLogging.AzureServiceBus.ConnectionString);
|
|
_sender = _client.CreateSender(globalSettings.EventLogging.AzureServiceBus.EventTopicName);
|
|
}
|
|
|
|
public async Task CreateAsync(IEvent e)
|
|
{
|
|
var message = new ServiceBusMessage(JsonSerializer.SerializeToUtf8Bytes(e))
|
|
{
|
|
ContentType = "application/json"
|
|
};
|
|
|
|
await _sender.SendMessageAsync(message);
|
|
}
|
|
|
|
public async Task CreateManyAsync(IEnumerable<IEvent> events)
|
|
{
|
|
var message = new ServiceBusMessage(JsonSerializer.SerializeToUtf8Bytes(events))
|
|
{
|
|
ContentType = "application/json"
|
|
};
|
|
|
|
await _sender.SendMessageAsync(message);
|
|
}
|
|
|
|
public async ValueTask DisposeAsync()
|
|
{
|
|
await _sender.DisposeAsync();
|
|
await _client.DisposeAsync();
|
|
}
|
|
}
|