运行时重新启动JMS服务器后发送JMS消息

时间:2012-07-09 07:27:54

标签: java spring jms weblogic reconnect

我遇到了有关JMS的问题。问题是,我有一个应用程序,它正在尝试通过JMS发送消息,但在JMS服务器重新启动后,它会抛出异常,就像服务器停机时一样。它没有重新连接。

没有重启JMS服务器就完全没问题了,我正在使用weblogic 10.x。

这是关于JMS配置的问题吗?

由于

1 个答案:

答案 0 :(得分:-1)

你可以发布你的代码如何发送消息吗?

如果您在JMS服务器关闭时尝试发送消息,则可能会有异常,并且必须处理该异常。当您下次尝试发送消息时,当JMS服务器重新启动并运行时,您可能会从连接工厂创建新连接。然后重新连接:

// Let's say, you inject CF and Dest.
@Resource(lookup = "jms/ConnectionFactory")
private static ConnectionFactory cf;

@Resource(lookup = "jms/MyQueue")
private static Destination dest;

public void sendMessage(){ // called every time you need to send a message.
   try{
     Connection con = cf.createConnection(); // will reconnect, otherwise pooled.
     Session sess = con.createSession(false,Session.AUTO_ACKNOWLEDGE);
     MessageProducer prod = sess.createProducer(dest);
     Message msg = sess.createTextMessage("Hello, World");
     prod.send(msg);
     sess.close();
     con.close();
   }catch(Exception e){
     // handle errors 
   }
}

但是,Weblogic JMS中有一些内置的故障转移/重新连接功能,请看一下这个页面:

Oracle code listing and documentation about reconnecting JMS producers