oktopus/backend/services/controller/internal/stomp/stomp.go
2023-10-27 01:47:53 -03:00

66 lines
1.2 KiB
Go

package stomp
import (
"log"
"os"
"time"
"github.com/go-stomp/stomp"
)
type Stomp struct {
Addr string
Conn *stomp.Conn
StopConn os.Signal
Connected bool
Username string
Password string
}
func (s *Stomp) Connect() {
log.Println("STOMP username:", s.Username)
log.Println("STOMP password:", s.Password)
var options []func(*stomp.Conn) error = []func(*stomp.Conn) error{
stomp.ConnOpt.Login(s.Username, s.Password),
stomp.ConnOpt.Host("/"),
}
const MAX_TRIES = 3
for i := 0; i < MAX_TRIES; i++ {
log.Println("Starting new STOMP client")
stompConn, err := stomp.Dial("tcp", s.Addr, options...)
if err != nil {
log.Println("Error connecting to STOMP server:", err.Error())
if i == MAX_TRIES-1 {
log.Printf("Reached max tries count: %d, stop trying to connect", MAX_TRIES)
return
}
time.Sleep(1 * time.Second)
continue
}
s.Conn = stompConn
s.Connected = true
break
}
log.Println("Connected to STOMP broker-->", s.Addr)
}
func (s *Stomp) Disconnect() {
if s.Connected {
s.Conn.Disconnect()
}
return
}
func (s *Stomp) Publish(msg []byte, topic, respTopic string, retain bool) {
//s.Conn.Send()
}
func (s *Stomp) Subscribe() {
//s.Conn.Subscribe()
}