41 lines
		
	
	
		
			932 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			932 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package vstp
 | |
| 
 | |
| import (
 | |
| 	"time"
 | |
| 
 | |
| 	"git.fjla.uk/owlboard/mq-client/log"
 | |
| 	"git.fjla.uk/owlboard/mq-client/messaging"
 | |
| 	"github.com/go-stomp/stomp/v3"
 | |
| )
 | |
| 
 | |
| func Subscribe() {
 | |
| 	sub, err := messaging.Client.Subscribe("/topic/VSTP_ALL", stomp.AckAuto)
 | |
| 	if err != nil {
 | |
| 		log.Msg.Fatal("Unable to start subscription: " + err.Error())
 | |
| 	}
 | |
| 	log.Msg.Info("Subscription to VSTP topic successful, listening")
 | |
| 
 | |
| 	go func() {
 | |
| 		log.Msg.Debug("GOROUTINE: VSTP Message Handler Started")
 | |
| 		defer func() {
 | |
| 			if r := recover(); r != nil {
 | |
| 				log.Msg.Warn("GOROUTINE: VSTP Message Handler Stopped")
 | |
| 				time.Sleep(time.Second * 10)
 | |
| 				log.Msg.Fatal("GOROUTINE: VSTP Message Handler Failed")
 | |
| 			}
 | |
| 		}()
 | |
| 		for {
 | |
| 			msg := <-sub.C
 | |
| 			if msg.Err != nil {
 | |
| 				log.Msg.Error("STOMP Message Error: " + msg.Err.Error())
 | |
| 			} else {
 | |
| 				log.Msg.Info("STOMP Message Received")
 | |
| 				saveToFile(string(msg.Body), "msgBody")
 | |
| 				handle(msg)
 | |
| 			}
 | |
| 		}
 | |
| 	}()
 | |
| 
 | |
| 	select {}
 | |
| }
 |