StackSpot.Queue.SQS
1.0.1
dotnet add package StackSpot.Queue.SQS --version 1.0.1
NuGet\Install-Package StackSpot.Queue.SQS -Version 1.0.1
<PackageReference Include="StackSpot.Queue.SQS" Version="1.0.1" />
paket add StackSpot.Queue.SQS --version 1.0.1
#r "nuget: StackSpot.Queue.SQS, 1.0.1"
// Install StackSpot.Queue.SQS as a Cake Addin #addin nuget:?package=StackSpot.Queue.SQS&version=1.0.1 // Install StackSpot.Queue.SQS as a Cake Tool #tool nuget:?package=StackSpot.Queue.SQS&version=1.0.1
StackSpot Queue SQS
Componente projetado para padronizar a comunicação com a Amazon Simple Queue Service (SQS) para aplicações .NET Core.
Versões suportadas
- net5.0
- net6.0
Uso
1. Adicione o pacote NuGet StackSpot.Queue.SQS
ao seu projeto.
dotnet add package StackSpot.Queue.SQS
2. Configure as variáveis.
- RegionEndpoint - Endpoint regional que será utilizado para requisitar o SQS - Campo Obrigatório.
Você pode sobrescrever a configuração padrão adicionando a seção Sqs
em seu appsettings.json
.
"Sqs": {
"RegionEndpoint": "us-east-1"
}
3. Adicione ao seu IServiceCollection
via services.AddSQS()
no Startup
da aplicação ou Program
tendo como parametro de entrada IConfiguration
e IWebHostEnvironment
.
services.AddSQS(Configuration, Env);
Implementação
A classe da mensagem que será integrada na fila, deverá herdar da classe
MessageBase
e decorada comQueue
, especificando o nome e o tipo da fila, que pode ser Standard ou Fifo.Enqueue - Publica uma mensagem na fila. Filas do tipo Fifo, possuem um identificador único.
Dequeue - Remove uma mensagem da fila.
Receive - Retorna uma mensagem da fila.
ReceiveMessages - Retorna uma lista de mensagens da fila.
Metodo que retorna uma mensagem utilizando o Receive.
[Queue("Test", QueueType.Standard)]
public class Test : MessageBase
{
public Test(string correlationId) : base(correlationId) { }
}
[ApiController]
[Route("[controller]")]
public class SampleController : ControllerBase
{
private readonly IQueueSqs _queueSqs;
public SampleController(IQueueSqs _queueSqs)
{
_queueSqs = queueSqs;
}
[HttpGet]
public async Task<IActionResult> Get()
{
var test = new Test(Guid.NewGuid().ToString());
_queueSqs.Enqueue(test);
var message = _queueSqs.Receive<Test>();
_queueSqs.Dequeue(test);
return Ok(message);
}
}
Metodo que retorna uma lista de mensagens utilizando o ReceiveMessages.
Paramentros do MessageRequest
MaxNumberOfMessages
O número máximo de mensagens a serem retornadas. O Amazon SQS nunca retorna mais mensagens do que
este valor (no entanto, menos mensagens podem ser retornadas). Valores válidos: 1 a 10. Padrão:1.
WaitTimeSeconds
A duração (em segundos) pela qual a chamada aguarda a chegada de uma mensagem no
fila antes de retornar.
VisibilityTimeout
A duração (em segundos) em que as mensagens recebidas ficam ocultas da recuperação subsequente
solicitações após serem recuperadas por um ReceiveMessage.
ReceiveRequestAttemptId
O ID de tentativa de solicitação de recebimento é o token usado para deduplicação de chamadas ReceiveMessage.
[Queue("Test", QueueType.Standard)]
public class Test : MessageBase
{
public Test(string correlationId) : base(correlationId) { }
}
[ApiController]
[Route("[controller]")]
public class SampleController : ControllerBase
{
private readonly IQueueSqs _queueSqs;
public SampleController(IQueueSqs _queueSqs)
{
_queueSqs = queueSqs;
}
[HttpGet]
public async Task<IActionResult> GetListMessage()
{
var messageRequest = new MessageRequest
{
MaxNumberOfMessages = 2,
VisibilityTimeout = 10,
WaitTimeSeconds = 1
};
var messages = await _queueSqs.ReceiveMessages<Test>(messageRequest);
return Ok(messages);
}
}
4. Ambiente local
- Esta etapa não é obrigatória.
- Recomendamos, para o desenvolvimento local, a criação de um contâiner com a imagem do Localstack.
- Para o funcionamento local você deve preencher a variável de ambiente
LOCALSTACK_CUSTOM_SERVICE_URL
com o valor da url do serviço. O valor padrão do localstack é http://localhost:4566. - Abaixo um exemplo de arquivo
docker-compose
com a criação do contâiner:
version: '2.1'
services:
localstack:
image: localstack/localstack
ports:
- "4566:4566"
environment:
- SERVICES=sqs
- AWS_DEFAULT_OUTPUT=json
- DEFAULT_REGION=us-east-1
Após a criação do contâiner, crie uma fila para realizar os testes com o componente. Recomendamos que você tenha instalado em sua estação o AWS CLI. Abaixo um exemplo de comando para criação de uma fila:
aws --endpoint-url=http://localhost:4566 --region=sa-east-1 sqs create-queue --queue-name [NOME DA SUA FILA]
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net5.0
- AWSSDK.SecurityToken (>= 3.7.1.108)
- AWSSDK.SQS (>= 3.7.2.14)
- Microsoft.Extensions.Configuration (>= 6.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Hosting (>= 6.0.0)
- Microsoft.Extensions.Logging (>= 6.0.0)
- Newtonsoft.Json (>= 13.0.1)
-
net6.0
- AWSSDK.SecurityToken (>= 3.7.1.108)
- AWSSDK.SQS (>= 3.7.2.14)
- Microsoft.Extensions.Configuration (>= 6.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Hosting (>= 6.0.0)
- Microsoft.Extensions.Logging (>= 6.0.0)
- Newtonsoft.Json (>= 13.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.