Reorganise repo
This commit is contained in:
47
messaging/client.go
Normal file
47
messaging/client.go
Normal file
@@ -0,0 +1,47 @@
|
||||
package messaging
|
||||
|
||||
import (
|
||||
"git.fjla.uk/owlboard/timetable-mgr/helpers"
|
||||
"git.fjla.uk/owlboard/timetable-mgr/log"
|
||||
"github.com/go-stomp/stomp/v3"
|
||||
)
|
||||
|
||||
var Client *stomp.Conn
|
||||
|
||||
// Initialises the connection to the STOMP server
|
||||
func StompInit(cfg *helpers.Configuration) {
|
||||
Client = dial(cfg.NrodUser, cfg.NrodPass)
|
||||
}
|
||||
|
||||
// Connects the STOMP file to the Network Rail MQ Server
|
||||
func dial(user, pass string) *stomp.Conn {
|
||||
conn, err := stomp.Dial("tcp", "publicdatafeeds.networkrail.co.uk:61618",
|
||||
stomp.ConnOpt.Login(user, pass),
|
||||
stomp.ConnOpt.HeartBeat(15000, 15000),
|
||||
stomp.ConnOpt.Header("client-id", user+"-mq-client"),
|
||||
)
|
||||
if err != nil {
|
||||
log.Msg.Fatal("Unable to connect to STOMP Client: " + err.Error())
|
||||
conn.MustDisconnect()
|
||||
}
|
||||
|
||||
log.Msg.Info("Initialised STOMP Client")
|
||||
return conn
|
||||
}
|
||||
|
||||
// Handles graceful disconnection of the STOMP client, falls back to
|
||||
// a force disconnect if this fails.
|
||||
func Disconnect(conn *stomp.Conn) {
|
||||
if conn != nil {
|
||||
err := conn.Disconnect()
|
||||
log.Msg.Warn("Disconnected STOMP Client")
|
||||
if err != nil {
|
||||
conn.MustDisconnect()
|
||||
log.Msg.Error("STOMP Disconnection failed, forced disconnect")
|
||||
}
|
||||
return
|
||||
}
|
||||
log.Msg.Error("STOMP Disconnect failed, next connection attempt may fail")
|
||||
}
|
||||
|
||||
// Register against the MQ Server and log each message for testing purposes
|
||||
Reference in New Issue
Block a user