我正在尝试此页面上的示例代码来测试将消息发布到WSO2 Message Broker:

https://docs.wso2.com/display/MB310/Sending+and+Receiving+Messages+Using+Queues

该示例代码似乎可以连接->发布->断开连接。

我认为这不是生产代码的典型设计。我尝试减少每次发布消息(每秒几次)时调用的代码,但看起来连接已断开并且从未重建:

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已关闭

每次发布消息时都需要重新连接吗?

最佳答案

样本仅用于演示目的。由于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);
   }
}

10-05 17:54