Используя Go-Stomp, можно получить соединение, используя приведенный ниже код.Кэширование соединения для ActiveMQ с использованием Go-Stomp
if conn, err = stomp.Dial("tcp",
Broker.URI,
stomp.ConnOpt.Login(Broker.User, Broker.Password)); err != nil {
panic(fmt.Sprintf("Could not connect to ActiveMQ using brokerUri %v. Can not continue.", Broker.URI))
}
Можно ли кэшировать соединение для повторного использования для отправки сообщений для разных запросов? Или нам нужно получить соединение каждый раз, когда вы хотите отправить сообщение?
Позже звучит неэффективно.
Отправить метод на экземпляре подключения закрывает соединение в случае сбоев. Поэтому, если мы его кэшируем, нужно проверить, продолжает ли соединение жить для последующих вызовов отправки сообщений. Но я не нашел способ проверить, закрыто ли соединение? Conn struct имеет закрыт участник, но это не раскрывается никаким способом.
// A Conn is a connection to a STOMP server. Create a Conn using either
// the Dial or Connect function.
type Conn struct {
conn io.ReadWriteCloser
readCh chan *frame.Frame
writeCh chan writeRequest
version Version
session string
server string
readTimeout time.Duration
writeTimeout time.Duration
closed bool
options *connOptions
}