虽然个人也不怎么推荐activeMQ, 只是由于项目需要, 所以也做一个简单的整理, 在订阅的时候 ,一般我们的业务都是处理字符串,但有时候AckMode 设置为AckAuto不可以,客服端处理完业务后在发回确认,所以订阅封装了2个方法
utils.go如下:
//Usage:
//
// //Send
// if err := utils.NewActiveMQ("localhost:61613").Send("/queue/test-1", "test from 1"); err != nil {
// fmt.Println("AMQ ERROR:", err)
//
// //this func will handle the messges get from activeMQ server.
// handler := func(msg string,err error) { fmt.Println("AMQ MSG:", err, msg) }
// if err := utils.NewActiveMQ("localhost:61613").Subscribe("/queue/test-1", handler); err != nil {
// fmt.Println("AMQ ERROR:", err)
// }
//
package utils
import (
"time"
"github.com/go-stomp/stomp"
)
type ActiveMQ struct {
Addr string
}
var options = []func(*stomp.Conn) error{
//设置读写超时,超时时间为1个小时
stomp.ConnOpt.HeartBeat(7200*time.Second, 7200*time.Second),