MailerServer/modules/rabbitmq/rabbitmq.go

115 lines
2.3 KiB
Go

package rabbitmq
import (
"time"
"clickandjoin.app/emailserver/modules/config"
gorabbitmqclient "git.clickandjoin.umbach.dev/ClickandJoin/go-rabbitmq-client"
)
const queueMails = "cnj.mails"
var MailsClient *gorabbitmqclient.Client
func Init() {
cfg := config.Cfg
MailsClient = gorabbitmqclient.NewClient(
cfg.Debug,
gorabbitmqclient.ExchangeSettings{},
gorabbitmqclient.QueueSettings{},
gorabbitmqclient.ChannelQosSettingsDefault,
gorabbitmqclient.Config{
ReconnectDelay: 1 * time.Second,
ReInitDelay: 1 * time.Second,
ResendDelay: 5 * time.Second,
},
gorabbitmqclient.GetConnectionString(
cfg.RabbitMq.Username,
cfg.RabbitMq.Password,
cfg.RabbitMq.Host))
<-time.After(time.Second)
MailMessagesHandling()
}
/*
func Init() {
conn, err := amqp.Dial(getConnectionString())
if err != nil {
logrus.Fatalln("RabbitMQ connection failed, err:", err)
}
ch, err := conn.Channel()
if err != nil {
logrus.Fatalln(err)
}
Channel = ch
err = ch.Qos(
1, // prefetch count
0, // prefetch size
false, // global
)
if err != nil {
logrus.Fatalln("Failed to set Qos, err:", err)
}
msgs, err := ch.Consume(
queueMails, // queue
"", // consumer
false, // auto-ack
false, // exclusive
false, // no-local
false, // no-wait
nil, // args
)
if err != nil {
logrus.Fatalln("Failed to consume mails, err:", err)
}
var forever chan struct{}
go func() {
for d := range msgs {
logrus.Debugln("RECV MAIL")
mailMessage := structs.RabbitMqMailMessage{}
if err := json.Unmarshal(d.Body, &mailMessage); err != nil {
logrus.Errorln("Failed to unmarshal json message, err:", err)
continue
}
logrus.Println(mailMessage.UserMail)
// only for testing
if !strings.HasSuffix(mailMessage.UserMail, "@roese.dev") && !strings.HasSuffix(mailMessage.UserMail, "@umbach.dev") {
mailMessage.UserMail = "info@clickandjoin.de"
}
err = mailer.NewMail(structs.Mail{
To: []string{mailMessage.UserMail},
TemplateId: mailMessage.TemplateId,
LanguageId: mailMessage.LanguageId,
BodyData: mailMessage.BodyData})
if err != nil {
logrus.Errorln("Failed to send new mail, err:", err)
continue
}
d.Ack(false)
}
}()
<-forever
}
*/