Newer
Older
package queue
import (
"fmt"
"os"
"os/signal"
"syscall"
"github.com/wind-c/comqtt/v2/cluster/log"
)
var MainQueue Queue
func Init() {
queue, err := NewQueue(os.Getenv("QUEUE_STATE_FOLDER") + "/main.json")
if err != nil {
log.Fatal("Error initializing main queue:", err)
}
// Set up signal handling for clean exit
exitChan := make(chan os.Signal, 1)
signal.Notify(exitChan, os.Interrupt, syscall.SIGTERM)
go func() {
<-exitChan
fmt.Println("\nSaving main queue state before exiting...")
fmt.Println("\nCurrent queue size: ", MainQueue.GetCurrentSize())
if err := MainQueue.Save(); err != nil {
fmt.Println("Error saving main queue state:", err)
} else {
fmt.Println("Main queue state saved successfully.")
}
os.Exit(0)
}()
}