请问我用如下的方式向ActiveMQ发送消息,当ActiveMQ服务器宕机时候,下面的代码中的两处(我已经标注)将会阻塞住,而我的主程序中还要干别的事情,不能因为JMS消息发不出去就阻塞了,所以请问各位,有什么方法让它不阻塞,或者设置一个超时时间,时间到了,就退出。再或者,让它抛出一个异常也可以。我搜了很久没有找到解决方法:(
import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.*;import org.apache.activemq.ActiveMQConnectionFactory;public class MyJMSSender {
private Connection connection = null;
private Session session = null;
private MessageProducer producer = null; private void initialize() throws JMSException, Exception {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
Config.user, Config.password, Config.url);
                // 这里会阻塞住,如果服务器宕了
connection = connectionFactory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic(Config.topic);
producer = session.createProducer(topic);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
} public void produceMessage(String message) throws JMSException, Exception {
// initialize();
TextMessage msg = session.createTextMessage(message); connection.start();
System.out.println("Producer:->Sending message: " + message);
                
                // 这里会阻塞住,如果服务器宕了
producer.send(msg);
System.out.println("Producer:->Message sent complete!");
} public void close() throws JMSException {
System.out.println("Producer:->Closing connection");
if (producer != null)
producer.close();
if (session != null)
session.close();
if (connection != null)
connection.close();
}
}