如何使JMS在设计中获得最佳性能和可靠性?

时间:2011-12-13 19:10:36

标签: java jms

如果我们使用JMS来处理实时消息,例如,实时股价信息,如何使其在设计中表现最佳和可靠?例如,应该使用队列还是主题?如果消息到达,它应该首先保存到数据库....,我们需要使用transcation吗?

如果此代码可以实现

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

由于

1 个答案:

答案 0 :(得分:0)

您的消息传递的性能不是由JMS层决定的,而是由底层实现决定的。例如。 WebSphere MQ,Tibco EMS,Apache ActiveMQ,Oracle AQ等

如果您希望仅发送给一个收件人(即进程),则应使用队列,但如果您希望让许多收件人读取每封邮件的副本,则使用主题。这是一个设计问题。

如果在处理邮件之前丢失邮件会对您的应用程序造成不利影响,则需要进行交易。或者如果有半处理的消息是有害的。在大多数情况下,您需要使用交易。