Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Adds Amazon SNS Support #1314

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

Shield1739
Copy link
Contributor

So far my plan is to create a separate transport for SNS instead of adding it to the current SQS support.

So far here are my cons and pros of creating a separate transport:

Pros

  • Less abstractions. Some of the code could be reused between the SQS/SNS transports, but due to the AWS SDKs having 2 different packages for SQS and SNS we would need to create some sort of abstraction between the SQS queue and the SNS topic.

If we were to merge it all into the AmazonSqsTransport class, we would need to create a separate field for the Client (IAmazonSQS / IAmazonSimpleNotificationService), Config (AmazonSQSConfig / AmazonSimpleNotificationServiceConfig). The queue/topic creation configuration and attributes would also be different for each endpoint.

  • Only load the transport that you are actually going to use. Just because you are using SNS means you are using SQS or vice versa.

Cons

  • Harder to integrate the two. SNS and SQS can be used completely independently from each other, but of course the do work well together. Mainly SNS give you the ability to subscribe an SQS queue to a SNS topic, so all messages you send to the topic will be then published to this queue. Automating this setup is something I think we could easily implement from within wolverine. BUT by having 2 different transports it makes it a little more complicated to achieve (at least to my peanut brain).

I had envisioned the ability to create a SNS topic, configure a subscription to a SQS queue and then configure a listener on that same queue all within wolverine. Storing the queues and topics in 2 different transports, just makes this a little more difficult.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant