using System.Text; using JOBot.Infrastructure.Config; using JOBot.TClient.Services; using Microsoft.Extensions.Hosting; using RabbitMQ.Client; using RabbitMQ.Client.Events; namespace JOBot.TClient.Queues; public class AuthQueue(IChannel channel, PrepareUserService prepareUserService) : BackgroundService { private async Task OnDataReceivedAsync(object sender, BasicDeliverEventArgs eventArgs) { await prepareUserService.AuthHookReceived(Convert.ToInt64(Encoding.UTF8.GetString(eventArgs.Body.ToArray()))); } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { var consumer = new AsyncEventingBasicConsumer(channel); consumer.ReceivedAsync += OnDataReceivedAsync; await channel.BasicConsumeAsync(RabbitQueues.AuthQueue, autoAck: true, consumer: consumer, cancellationToken: stoppingToken); } }