我想用jmstemplate发送一个大的字符串消息(3-5MB)(用activemq jms broker)。在发送消息的过程中,我关闭了我的代理;为什么我无法在catch中捕获抛出的异常(异常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;
}
}提前谢谢。
发布于 2013-07-12 23:55:17
这只是一个猜测,但这可能是因为Spring将异常重新抛出为JmsException,这是一个运行时异常,所以您需要捕获Throwable才能真正捕获它。
https://stackoverflow.com/questions/17409481
复制相似问题