diff --git a/src/DotNetCore.CAP.AmazonSQS/AmazonPolicyExtensions.cs b/src/DotNetCore.CAP.AmazonSQS/AmazonPolicyExtensions.cs
index d3af025..1f9c652 100644
--- a/src/DotNetCore.CAP.AmazonSQS/AmazonPolicyExtensions.cs
+++ b/src/DotNetCore.CAP.AmazonSQS/AmazonPolicyExtensions.cs
@@ -209,7 +209,7 @@ namespace DotNetCore.CAP.AmazonSQS
///
/// Source ARN
/// Group prefix or null if group not present
- private static string GetArnGroupPrefix(string arn)
+ private static string? GetArnGroupPrefix(string arn)
{
const char separator = '-';
if (string.IsNullOrEmpty(arn) || !arn.Contains(separator))
@@ -235,7 +235,7 @@ namespace DotNetCore.CAP.AmazonSQS
///
/// Source ARN
/// Group name or null if group not present
- private static string GetGroupName(string arn)
+ private static string? GetGroupName(string arn)
{
const char separator = ':';
if (string.IsNullOrEmpty(arn) || !arn.Contains(separator))
diff --git a/src/DotNetCore.CAP.AmazonSQS/AmazonSQSConsumerClient.cs b/src/DotNetCore.CAP.AmazonSQS/AmazonSQSConsumerClient.cs
index 9c1a463..01dca36 100644
--- a/src/DotNetCore.CAP.AmazonSQS/AmazonSQSConsumerClient.cs
+++ b/src/DotNetCore.CAP.AmazonSQS/AmazonSQSConsumerClient.cs
@@ -27,8 +27,8 @@ namespace DotNetCore.CAP.AmazonSQS
private readonly string _groupId;
private readonly AmazonSQSOptions _amazonSQSOptions;
- private IAmazonSimpleNotificationService _snsClient;
- private IAmazonSQS _sqsClient;
+ private IAmazonSimpleNotificationService? _snsClient;
+ private IAmazonSQS? _sqsClient;
private string _queueUrl = string.Empty;
public AmazonSQSConsumerClient(string groupId, IOptions options)
@@ -37,9 +37,9 @@ namespace DotNetCore.CAP.AmazonSQS
_amazonSQSOptions = options.Value;
}
- public event EventHandler OnMessageReceived;
+ public event EventHandler? OnMessageReceived;
- public event EventHandler OnLog;
+ public event EventHandler? OnLog;
public BrokerAddress BrokerAddress => new BrokerAddress("AmazonSQS", _queueUrl);
@@ -57,7 +57,7 @@ namespace DotNetCore.CAP.AmazonSQS
{
var createTopicRequest = new CreateTopicRequest(topic.NormalizeForAws());
- var createTopicResponse = _snsClient.CreateTopicAsync(createTopicRequest).GetAwaiter().GetResult();
+ var createTopicResponse = _snsClient!.CreateTopicAsync(createTopicRequest).GetAwaiter().GetResult();
topicArns.Add(createTopicResponse.TopicArn);
}
@@ -92,13 +92,13 @@ namespace DotNetCore.CAP.AmazonSQS
while (true)
{
- var response = _sqsClient.ReceiveMessageAsync(request, cancellationToken).GetAwaiter().GetResult();
+ var response = _sqsClient!.ReceiveMessageAsync(request, cancellationToken).GetAwaiter().GetResult();
if (response.Messages.Count == 1)
{
var messageObj = JsonSerializer.Deserialize(response.Messages[0].Body);
- var header = messageObj.MessageAttributes.ToDictionary(x => x.Key, x => x.Value.Value);
+ var header = messageObj!.MessageAttributes.ToDictionary(x => x.Key, x => x.Value.Value);
var body = messageObj.Message;
var message = new TransportMessage(header, body != null ? Encoding.UTF8.GetBytes(body) : null);
@@ -119,7 +119,7 @@ namespace DotNetCore.CAP.AmazonSQS
{
try
{
- _ = _sqsClient.DeleteMessageAsync(_queueUrl, (string)sender).GetAwaiter().GetResult();
+ _ = _sqsClient!.DeleteMessageAsync(_queueUrl, (string)sender).GetAwaiter().GetResult();
}
catch (InvalidIdFormatException ex)
{
@@ -127,12 +127,12 @@ namespace DotNetCore.CAP.AmazonSQS
}
}
- public void Reject(object sender)
+ public void Reject(object? sender)
{
try
{
// Visible again in 3 seconds
- _ = _sqsClient.ChangeMessageVisibilityAsync(_queueUrl, (string)sender, 3).GetAwaiter().GetResult();
+ _ = _sqsClient!.ChangeMessageVisibilityAsync(_queueUrl, (string)sender!, 3).GetAwaiter().GetResult();
}
catch (MessageNotInflightException ex)
{
@@ -237,7 +237,7 @@ namespace DotNetCore.CAP.AmazonSQS
{
Connect(initSNS: false, initSQS: true);
- var queueAttributes = await _sqsClient.GetAttributesAsync(_queueUrl).ConfigureAwait(false);
+ var queueAttributes = await _sqsClient!.GetAttributesAsync(_queueUrl).ConfigureAwait(false);
var sqsQueueArn = queueAttributes["QueueArn"];
@@ -263,12 +263,12 @@ namespace DotNetCore.CAP.AmazonSQS
private async Task SubscribeToTopics(IEnumerable topics)
{
- var queueAttributes = await _sqsClient.GetAttributesAsync(_queueUrl).ConfigureAwait(false);
+ var queueAttributes = await _sqsClient!.GetAttributesAsync(_queueUrl).ConfigureAwait(false);
var sqsQueueArn = queueAttributes["QueueArn"];
foreach (var topicArn in topics)
{
- await _snsClient.SubscribeAsync(new SubscribeRequest
+ await _snsClient!.SubscribeAsync(new SubscribeRequest
{
TopicArn = topicArn,
Protocol = "sqs",
diff --git a/src/DotNetCore.CAP.AmazonSQS/CAP.AmazonSQSOptions.cs b/src/DotNetCore.CAP.AmazonSQS/CAP.AmazonSQSOptions.cs
index f8dcfd5..4fdf3f2 100644
--- a/src/DotNetCore.CAP.AmazonSQS/CAP.AmazonSQSOptions.cs
+++ b/src/DotNetCore.CAP.AmazonSQS/CAP.AmazonSQSOptions.cs
@@ -10,19 +10,19 @@ namespace DotNetCore.CAP
// ReSharper disable once InconsistentNaming
public class AmazonSQSOptions
{
- public RegionEndpoint Region { get; set; }
+ public RegionEndpoint Region { get; set; } = default!;
- public AWSCredentials Credentials { get; set; }
+ public AWSCredentials? Credentials { get; set; }
///
/// Overrides Service Url deduced from AWS Region. To use in local development environments like localstack.
///
- public string SNSServiceUrl { get; set; }
+ public string? SNSServiceUrl { get; set; }
///
/// Overrides Service Url deduced from AWS Region. To use in local development environments like localstack.
///
- public string SQSServiceUrl { get; set; }
+ public string? SQSServiceUrl { get; set; }
}
}
\ No newline at end of file
diff --git a/src/DotNetCore.CAP.AmazonSQS/DotNetCore.CAP.AmazonSQS.csproj b/src/DotNetCore.CAP.AmazonSQS/DotNetCore.CAP.AmazonSQS.csproj
index 6518763..9cd09e5 100644
--- a/src/DotNetCore.CAP.AmazonSQS/DotNetCore.CAP.AmazonSQS.csproj
+++ b/src/DotNetCore.CAP.AmazonSQS/DotNetCore.CAP.AmazonSQS.csproj
@@ -2,12 +2,12 @@
netstandard2.1
- DotNetCore.CAP.AmazonSQS
+ enable
$(PackageTags);AmazonSQS;SQS
- bin\$(Configuration)\netstandard2.1\DotNetCore.CAP.AmazonSQS.xml
+ true
1701;1702;1705;CS1591
diff --git a/src/DotNetCore.CAP.AmazonSQS/ITransport.AmazonSQS.cs b/src/DotNetCore.CAP.AmazonSQS/ITransport.AmazonSQS.cs
index 44c8583..0bbb8b9 100644
--- a/src/DotNetCore.CAP.AmazonSQS/ITransport.AmazonSQS.cs
+++ b/src/DotNetCore.CAP.AmazonSQS/ITransport.AmazonSQS.cs
@@ -22,8 +22,8 @@ namespace DotNetCore.CAP.AmazonSQS
private readonly ILogger _logger;
private readonly IOptions _sqsOptions;
private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(1, 1);
- private IAmazonSimpleNotificationService _snsClient;
- private IDictionary _topicArnMaps;
+ private IAmazonSimpleNotificationService? _snsClient;
+ private IDictionary? _topicArnMaps;
public AmazonSQSTransport(ILogger logger, IOptions sqsOptions)
{
@@ -41,7 +41,7 @@ namespace DotNetCore.CAP.AmazonSQS
if (TryGetOrCreateTopicArn(message.GetName().NormalizeForAws(), out var arn))
{
- string bodyJson = null;
+ string? bodyJson = null;
if (message.Body != null)
{
bodyJson = Encoding.UTF8.GetString(message.Body);
@@ -59,7 +59,7 @@ namespace DotNetCore.CAP.AmazonSQS
MessageAttributes = attributes
};
- await _snsClient.PublishAsync(request);
+ await _snsClient!.PublishAsync(request);
_logger.LogDebug($"SNS topic message [{message.GetName().NormalizeForAws()}] has been published.");
return OperateResult.Success;
@@ -117,7 +117,7 @@ namespace DotNetCore.CAP.AmazonSQS
{
_topicArnMaps = new Dictionary();
- string nextToken = null;
+ string? nextToken = null;
do
{
var topics = nextToken == null
@@ -143,15 +143,15 @@ namespace DotNetCore.CAP.AmazonSQS
}
}
- private bool TryGetOrCreateTopicArn(string topicName, out string topicArn)
+ private bool TryGetOrCreateTopicArn(string topicName,[System.Diagnostics.CodeAnalysis.NotNullWhen(true)] out string? topicArn)
{
topicArn = null;
- if (_topicArnMaps.TryGetValue(topicName, out topicArn))
+ if (_topicArnMaps!.TryGetValue(topicName, out topicArn))
{
return true;
}
- var response = _snsClient.CreateTopicAsync(topicName).GetAwaiter().GetResult();
+ var response = _snsClient!.CreateTopicAsync(topicName).GetAwaiter().GetResult();
if (string.IsNullOrEmpty(response.TopicArn))
{
diff --git a/src/DotNetCore.CAP.AmazonSQS/SQSReceivedMessage.cs b/src/DotNetCore.CAP.AmazonSQS/SQSReceivedMessage.cs
index 893b418..53fcd64 100644
--- a/src/DotNetCore.CAP.AmazonSQS/SQSReceivedMessage.cs
+++ b/src/DotNetCore.CAP.AmazonSQS/SQSReceivedMessage.cs
@@ -4,15 +4,15 @@ namespace DotNetCore.CAP.AmazonSQS
{
class SQSReceivedMessage
{
- public string Message { get; set; }
+ public string? Message { get; set; }
- public Dictionary MessageAttributes { get; set; }
+ public Dictionary MessageAttributes { get; set; } = default!;
}
class SQSReceivedMessageAttributes
{
- public string Type { get; set; }
+ public string? Type { get; set; }
- public string Value { get; set; }
+ public string? Value { get; set; }
}
}