Управление подключением к WSO2 Message Broker

Я пробую пример кода с этой страницы, чтобы протестировать публикацию сообщений в брокере сообщений WSO2:

https://docs.wso2.com/display/MB310/Отправка+и+получение+сообщений+использование+очередей

Образец кода появляется для подключения -> публикации -> отключения.

Я предполагаю, что это не типичный дизайн для производственного кода. Я попытался сократить код, который вызывается каждый раз, когда я публикую сообщение (несколько раз в секунду), но похоже, что соединение разрывается и никогда не восстанавливается:

public void publishMessage(String msg) throws NamingException, JMSException {
    TextMessage textMessage = topicSession.createTextMessage(msg);
    topicPublisher.publish(textMessage);
}

javax.jms.IllegalStateException: объект org.wso2.andes.client.AMQSession_0_8@79aa1855 закрыт

Нужно ли повторно подключаться каждый раз, когда я публикую сообщение?


person Mike Stoddart    schedule 04.10.2016    source источник


Ответы (1)


Образцы предназначены только для демонстрационных целей. Поскольку JMS является относительно тяжелым соединением, не рекомендуется устанавливать соединения для каждого сообщения. вы можете просто изменить код для отправки нескольких сообщений с одним и тем же сеансом. На основе прикрепленного кода вы можете использовать простой цикл for для отправки 5 сообщений.

public void publishMessage(String msg) throws NamingException, JMSException {
   TextMessage textMessage = topicSession.createTextMessage(msg);
   for(int i=0; i<5; i++){
        topicPublisher.publish(textMessage);
   }
}
person plr    schedule 05.10.2016
comment
Спасибо - я делал это в своем коде. Должно быть, я делаю что-то не так, поскольку у меня проблемы с подключением. Я перечитаю и попробую снова. - person Mike Stoddart; 05.10.2016