2013-07-01 66 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