using System.Text.Json; using Amazon.SQS; using Amazon.SQS.Model; using ProposalSystem.Application.Interfaces; namespace ProposalSystem.Infrastructure.Services; public class SqsJobPublisher : IJobPublisher { private readonly IAmazonSQS _sqsClient; private readonly string _queueUrl; public SqsJobPublisher(IAmazonSQS sqsClient, string queueUrl) { _sqsClient = sqsClient; _queueUrl = queueUrl; } public async Task PublishAsync(string jobType, object payload, CancellationToken ct = default) { var message = new { jobType, payload, timestamp = DateTime.UtcNow, }; await _sqsClient.SendMessageAsync(new SendMessageRequest { QueueUrl = _queueUrl, MessageBody = JsonSerializer.Serialize(message), }, ct); } }