README
¶
SQS SNS Broker Plugin for go-micro
Amazon Simple Notification Service and Simple Queue Service broker plugin for go-micro
allows you to publish to SNS and subscribe messages brokered by SQS. This plugin does not (yet) support automatic creation of SQS queues or SNS topics so those will have to exist in your infrastructure before attempting to send/receive.
AWS Credentials
This plugin uses the official Go SDK for AWS. As such, it will obtain AWS credentials the same way all other aws-go-sdk
applications do. The plugin explicitly allows the use of the shared credentials file to make development on workstations easier, but you can also supply the usual AWS_*
environment variables in dev/test/prod environments. Also if you're deploying in EC2/ECS, the IAM Role
will be picked up automatically and you won't need to supply any credentials.
Publishing and Subscribing
Publishing and subscribing with the plugin should work just like all other brokers. Simply supply the name of the queue in the publish or subscribe arguments:
broker.Publish("my_topic", msg)
...
broker.Subscribe("queue", subscriberFunc)
You will need to supply the AWS_REGION
environment variable to configure the region (in addition to credentials as above).
Because SNS can't deliver to FIFO
queues, you cannot subscribe to a FIFO
queue using this broker.
Options
If you're using a regular (non-fifo) queue you should be able to get by without having to supply any special options. However, if you need to specify a group identifier for a message or a de-duplication identifier, then you'll have to specify a generator function for those.
This plugin is under active development and will likely get more configurable options and features in the near future.
Documentation
¶
Index ¶
- func ClientHeaderWhitelistOnPublish(whitelist map[string]struct{}) client.PublishOption
- func ClientValidateHeaderOnPublish(validate bool) client.PublishOption
- func ClientValidateOnPublish(validate bool) client.PublishOption
- func HeaderWhitelistOnPublish(whitelist map[string]struct{}) broker.PublishOption
- func MaxReceiveMessages(max int64) broker.SubscribeOption
- func NewBroker(opts ...broker.Option) broker.Broker
- func SNSConfig(c *aws.Config) broker.Option
- func SQSConfig(c *aws.Config) broker.Option
- func STSConfig(c *aws.Config) broker.Option
- func ValidateBody(msg *broker.Message) error
- func ValidateHeader(msg *broker.Message, whitelist map[string]struct{}) error
- func ValidateHeaderOnPublish(validate bool) broker.PublishOption
- func ValidateOnPublish(validate bool) broker.PublishOption
- func VisibilityTimeout(seconds int64) broker.SubscribeOption
- func WaitTimeSeconds(seconds int64) broker.SubscribeOption
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ClientHeaderWhitelistOnPublish ¶
func ClientHeaderWhitelistOnPublish(whitelist map[string]struct{}) client.PublishOption
ClientHeaderWhitelist validate headers before sending to sns
func ClientValidateHeaderOnPublish ¶
func ClientValidateHeaderOnPublish(validate bool) client.PublishOption
ClientValidateHeaderOnPublish validate headers before sending to sns
func ClientValidateOnPublish ¶
func ClientValidateOnPublish(validate bool) client.PublishOption
func HeaderWhitelistOnPublish ¶
func HeaderWhitelistOnPublish(whitelist map[string]struct{}) broker.PublishOption
HeaderWhitelist validate headers before sending to sns
func MaxReceiveMessages ¶
func MaxReceiveMessages(max int64) broker.SubscribeOption
MaxReceiveMessages indicates how many messages a receive operation should pull during any single call
func ValidateBody ¶
ValidateBody Validate message for the lowest requirements of both SNS and SQS
func ValidateHeaderOnPublish ¶
func ValidateHeaderOnPublish(validate bool) broker.PublishOption
ValidateHeaderOnPublish validate headers before sending to sns
func ValidateOnPublish ¶
func ValidateOnPublish(validate bool) broker.PublishOption
ValidateOnPublish determines whether to pre-validate messages before they're published This has a significant performance impact
func VisibilityTimeout ¶
func VisibilityTimeout(seconds int64) broker.SubscribeOption
VisibilityTimeout controls how long a message is hidden from other queue consumers before being put back. If a consumer does not delete the message, it will be put back even if it was "processed"
func WaitTimeSeconds ¶
func WaitTimeSeconds(seconds int64) broker.SubscribeOption
WaitTimeSeconds controls the length of long polling for available messages
Types ¶
This section is empty.