/
sqsproducerconfig.go
51 lines (42 loc) · 1.4 KB
/
sqsproducerconfig.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package runsqs
import (
"context"
"net/http"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/sqs"
)
// DefaultSQSProducerConfig represents the configuration to configure DefaultSQSProducer
type DefaultSQSProducerConfig struct {
AWSEndpoint string
QueueURL string
QueueRegion string
}
// Name of the configuration
func (*DefaultSQSProducerConfig) Name() string {
return "sqsproducer"
}
// DefaultSQSProducerComponent enables creating configured Component
type DefaultSQSProducerComponent struct {
}
// NewDefaultSQSProducerComponent generates a new DefaultSQSQueueConsumerComponent
func NewDefaultSQSProducerComponent() *DefaultSQSProducerComponent {
return &DefaultSQSProducerComponent{}
}
// Settings generates the default configuration for DefaultSQSProducerComponent
func (c *DefaultSQSProducerComponent) Settings() *DefaultSQSProducerConfig {
return &DefaultSQSProducerConfig{}
}
// New creates a configured DefaultSQSQueueConsumer
func (c *DefaultSQSProducerComponent) New(ctx context.Context, config *DefaultSQSProducerConfig) (DefaultSQSProducer, error) {
var sesh = session.Must(session.NewSession())
q := sqs.New(sesh, &aws.Config{
Region: aws.String(config.QueueRegion),
HTTPClient: http.DefaultClient,
Endpoint: aws.String(config.AWSEndpoint),
})
return DefaultSQSProducer{
QueueURL: config.QueueURL,
Queue: q,
}, nil
}