Try ElasticMQ
Environments
- go version go1.12.8 darwin/amd64
- Docker version 19.03.4
- docker-compose version 1.24.1
Docker compose setting
version: '3'
services:
elasticmq:
image: softwaremill/elasticmq
container_name: elasticmq
ports:
- "9324:9324"
networks:
container:
ipv4_address: 10.2.0.2
app:
image: app:latest
container_name: app
ports:
- "8000:8000"
networks:
container:
ipv4_address: 10.2.0.3
networks:
container:
driver: bridge
ipam:
config:
- subnet: 10.2.0.0/16
go code
var QueueURL string
var QueueName string
func getSqsClient() *sqs.SQS {
var sqsClient *sqs.SQS
sess, err := session.NewSession(aws.NewConfig().
WithRegion("ap-northeast-1").
WithCredentials(credentials.NewStaticCredentials(
service.GetAwsAccessKey(),
service.GetAwsSecretKey(), "")))
if err != nil {
panic("NewSession failed error:" + err.Error())
}
if service.UseAwsSQS(){
sqsClient = sqs.New(sess)
QueueURL = service.GetSQSBaseEndpoint() + "/" + QueueName
}else{
// Use ElasticMQ
sqsClient = sqs.New(sess, &aws.Config{Endpoint: aws.String("http://10.2.0.2:9324")})
QueueURL = "http://10.2.0.4:9324/queue/" + QueueName
// -------
// Option: create queue
// -------
res, err := SqsClient.CreateQueue(&sqs.CreateQueueInput{
QueueName: aws.String(QueueName),
})
if err != nil{
panic("CreateQueue failed error:"+err.Error())
}
log.Infof("created new queue(%s) on elasticMQ", *res.QueueUrl)
// -------
}
return sqsClient
}
Read other posts