如何设置JMS的超时

xharry 2008-09-05 05:36:17
请问我用如下的方式向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();
}
}
...全文
650 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
接天居士 2012-05-18
  • 打赏
  • 举报
回复
同求答案
内存泄漏 2008-09-09
  • 打赏
  • 举报
回复
也不会有异常抛出的吗??
Higgs玻色子 2008-09-09
  • 打赏
  • 举报
回复
设置超时
meadking 2008-09-07
  • 打赏
  • 举报
回复
关注,呵呵
willowflx 2008-09-06
  • 打赏
  • 举报
回复
帮忙顶一个!!

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧