/
main.go
90 lines (66 loc) · 2.09 KB
/
main.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package main
import (
"fmt"
"github.com/robertojrojas/microservices-go/pets/dogs-service/messaging"
"github.com/robertojrojas/microservices-go/pets/dogs-service/models"
"log"
"os"
)
const moduleName = "dog-service"
var Version = "0.0.1"
var BuildTime string
func getVersion() string {
return fmt.Sprintf("%s version: %s build time: %s", moduleName, Version, BuildTime)
}
type config struct {
rabbitMQURI string
rabbitMQQueue string
mongoDBURI string
mongoDBName string
mongoDBCollection string
}
func main() {
log.Printf("%s\n", getVersion())
envConfig := getConfig()
log.Printf("%#v\n", envConfig)
dogMongoStore, err := models.NewDogMongoStore(envConfig.mongoDBURI, envConfig.mongoDBName, envConfig.mongoDBCollection)
checkErr(err, "connecting to MongoDB")
defer dogMongoStore.Disconnect()
messageHanlder := messaging.NewMessageHandler(dogMongoStore)
amqpManager := messaging.NewAMQManager(envConfig.rabbitMQURI, envConfig.rabbitMQQueue, messageHanlder)
err = amqpManager.Connect()
checkErr(err, "connecting to RabbitMQ")
defer amqpManager.Disconnect()
log.Println("Ready to receive messages...")
err = amqpManager.WaitForMessages()
checkErr(err, "receive messages from RabbitMQ")
}
func getConfig() *config {
envConfig := config{}
envConfig.rabbitMQURI = os.Getenv("RABBITMQ_URI")
if envConfig.rabbitMQURI == "" {
envConfig.rabbitMQURI = "amqp://guest:guest@localhost:5672/"
}
envConfig.rabbitMQQueue = os.Getenv("RABBITMQ_QUEUE")
if envConfig.rabbitMQQueue == "" {
envConfig.rabbitMQQueue = "dog_service_rpc_queue"
}
envConfig.mongoDBURI = os.Getenv("MONGODB_URI")
if envConfig.mongoDBURI == "" {
envConfig.mongoDBURI = "mongodb://localhost:27017"
}
envConfig.mongoDBName = os.Getenv("MONGODB_DBNAME")
if envConfig.mongoDBName == "" {
envConfig.mongoDBName = "dogsDB"
}
envConfig.mongoDBCollection = os.Getenv("MONGODB_COLLECTION")
if envConfig.mongoDBCollection == "" {
envConfig.mongoDBCollection = "dogs"
}
return &envConfig
}
func checkErr(err error, message string) {
if err != nil {
log.Fatalf("error: %s - %s", message, err)
}
}