我想使用jmstemplate(使用activemq jms代理)发送大型字符串消息(3-5 MB)。在发送消息的过程中,我关闭了经纪人;为什么我不能在catch(Exception e)中捕获引发的异常?我应该怎么处理这个异常?
public class MessageSenderServiceImpl implements MessageSenderService
{
private JmsTemplate jmsTemplate;
@Override
@Transactional
public void sendMessage(final String messageContent, final String destination) throws SendingMessageException
{
try
{
jmsTemplate.send(destination, new MessageCreator()
{
@Override
public Message createMessage(Session session) throws JMSException
{
BytesMessage byteMessage = session.createBytesMessage();
try
{
byteMessage.writeBytes(messageContent.getBytes("UTF-8"));
return byteMessage;
}
catch (UnsupportedEncodingException e)
{
e.printStackTrace();
throw new JMSException(e.getMessage());
}
}
});
}
catch(Exception e)
{
throw new SendingMessageException(e.getMessage(),e);
}
}
public void setJmsTemplate(JmsTemplate jmsTemplate)
{
this.jmsTemplate = jmsTemplate;
}
}
提前致谢。
请您参考如下方法:
这只是一个猜测,但这可能是因为Spring的JmsTemplate将异常重新抛出为JmsException,这是运行时异常,因此您需要捕获Throwable才能真正捕获它。