2013-07-01 29 views
2

我想用jmstemplate(带有activemq jms代理)发送大型字符串消息(3-5 MB)。在发送消息的过程中,我关闭了我的经纪人;为什么我不能捕获抛出异常(例外e)?我应该怎样处理这个异常?JmsTemplate中的异常处理发送

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; 
    } 
} 

在此先感谢。

+0

你会得到哪些例外?日志文件中包含什么内容? – Beryllium

+0

你解决了这个问题吗?我看到类似的东西。有没有可能JmsTemplate没有抛出异常? – rghome

回答

0

这只是一个猜测,但可能是因为Spring的JmsTemplate将异常重新抛出异常为JmsException,这是一个运行时异常,所以您需要捕获Throwable才能真正捕获它。

+0

RuntimeException扩展异常,我想。 – united

+0

是的,你是对的 - 请忽略我的评论 - 我在看这篇文章,并错过了你已经赶上顶部例外:http://forum.springsource.org/showthread.php?95919-Exception-handling-while-做一个jmsTemplate发送 – Marina

+0

它不建议捕捉异常其摘要。我给你一个点给我的例外名称:) JmsException – JWqvist