2011-12-13 70 views
0

如果我們使用JMS來處理實時消息,例如實時股票價格消息,如何使它在設計中的性能和可靠性最佳?例如,應該使用隊列還是主題?如果消息到達,它應該先保存到數據庫中....我們需要使用transcation嗎?如何使JMS在設計中獲得最佳性能和可靠性?

如果這個代碼可以實現實時

public void onMessage(Message msg) { 
     final long currentTime = System.currentTimeMillis(); 

     Thread timer = new Thread(new Runnable(){ 
      @Override 
      public void run() { 
       while(true){ 
        if((System.currentTimeMillis()-currentTime)>processTimeLimit){ 
         // send message back to server, processing time is over the limit 
         break; 
        }     
       }   
      }   
     }); 
     timer.start(); 

     Thread t = new Thread(new Runnable(){ 
      @Override 
      public void run() {    
       // save to db 
      }}); 
     t.start();  
    } 

感謝

回答

0

你的消息的性能達不到JMS層,但底層實現。例如。 WebSphere MQ,Tibco EMS,Apache ActiveMQ,Oracle AQ等。

如果您希望只發送給一個收件人(例如進程),那麼您應該使用隊列,但如果您希望讓許多收件人閱讀每封郵件的副本。這是一個設計問題。

如果在處理消息之前丟失消息,那麼您需要事務處理對您的應用程序不利。或者如果有半信息處理是有害的。在大多數情況下,您需要使用交易。

相關問題