代码中没有正确处理异常导致activemq连接不上的代码实例
以下是一个可能导致activemq连接不上的代码实例:
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
import java.util.Scanner;
public class Producer {
public static void main(String[] args) {
try {
// 创建连接工厂
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// 创建连接
Connection connection = factory.createConnection();
// 启动连接
connection.start();
// 创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建消息队列
Destination destination = session.createQueue("testQueue");
// 创建生产者
MessageProducer producer = session.createProducer(destination);
// 创建消息
TextMessage message = session.createTextMessage();
message.setText("Hello World!");
// 发送消息
producer.send(message);
// 关闭连接
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
该代码中没有正确处理异常,如果连接到activemq失败,程序将直接抛出异常并终止运行,而不是进行重试或其他处理。为了更好地处理异常,可以修改代码如下:
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
import java.util.Scanner;
public class Producer {
public static void main(String[] args) {
try {
// 创建连接工厂
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// 创建连接
Connection connection = null;
try {
connection = factory.createConnection();
} catch (JMSException e) {
System.out.println("Failed to connect to ActiveMQ server. Retrying in 5 seconds...");
Thread.sleep(5000);
connection = factory.createConnection();
}
// 启动连接
connection.start();
// 创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建消息队列
Destination destination = session.createQueue("testQueue");
// 创建生产者
MessageProducer producer = session.createProducer(destination);
// 创建消息
TextMessage message = session.createTextMessage();
message.setText("Hello World!");
// 发送消息
producer.send(message);
// 关闭连接
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
在上面的代码中,我们添加了一个try-catch语句块来捕获连接到activemq失败的异常,并在5秒后尝试重新连接。这样可以更好地处理异常情况,使程序更具有健壮性。
原文地址: https://www.cveoy.top/t/topic/KuZ 著作权归作者所有。请勿转载和采集!