vik*_*iii 9 java activemq-classic jms listener nullpointerexception
我ActiveMQ用来发送消息.
所以当我发送消息时,消息就会收到消息.成功插入后,即可确认.
但我确认后会有代码,可以抛出NullPointerException.
因此,为了故意产生这种异常,我已经抛出了NullPointerException.所以当它这样做时:
消息不是dequeued,并且相同的消息再次出现在该onMessage函数中.
我的代码是:
public void onMessage(Message message) {
String msg = null;
try
{
msg = receiveMessage(message);
// Other code to insert message in db
message.acknowledge();
if(true)
{
throw new NullPointerException("npe"));
}
** // Other code which might produce a null pointer exception **
}
catch(Exception ex)
{
}
}
Run Code Online (Sandbox Code Playgroud)
为什么消息会再次onMessage()发挥作用,因为我acknowledge()也有.
因为我已经在db中插入了消息.
队列中的消息是否会被删除acknowledge()?
我怎么能做到这一点?
您可以创建一个单独的方法来处理消息,我的意思是在onMessage()函数中编写仅将该消息插入数据库的代码。
并创建一个单独的函数来处理该消息。
这样,如果您在处理过程中遇到任何错误,该消息将不会再次出现onMessage()。