feat: add globalOptions support in SqsService with sqs endpoint property #81
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context
Related issue: Issue #78.
Problem
Currently, we're unable to set the SQS endpoint when the module is registered. As mentioned in the issue, when using an emulator, we receive warnings because the
queueUrl
is composed from AWS credentials in the environment, which differs from local URLs such as those used by LocalStack.The error message suggests using the
useQueueUrlAsEndpoint
property, but I couldn't find that in the SQSClient options. However, setting theendpoint
directly resolves the issue.To provide more background, when running SQS locally using LocalStack, I set the SQS endpoint to
http://localhost:4566
.Solution
I added an optional
globalOptions
object property with anendpoint
field to allow setting the endpoint directly on the SQSClient. The condition ensures that if the consumer/producer options have ansqs
property, it won't be overwritten by the global one. I decided that consumer/producer options should take priority.This solution was tested locally and works as expected.
Other Thoughts
We can discuss adding more properties to the
globalOptions
. I'm open to suggestions, but for now, I wasn't sure if anything else would be necessary.