Как сделать JMS лучшими по производительности и надежными в дизайне? - PullRequest
0 голосов
/ 13 декабря 2011

Если мы используем 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 голосов
/ 13 декабря 2011

Производительность вашего обмена сообщениями зависит не от уровня JMS, а от базовой реализации. НАПРИМЕР. WebSphere MQ, Tibco EMS, Apache ActiveMQ, Oracle AQ и т. Д.

Вы должны использовать очередь, если вы хотите отправить только одному получателю (т.е. процессу), но использовать тему, если вы хотите, чтобы много получателей прочитали копию каждого сообщения. Это проблема дизайна.

Вам нужны транзакции, если потеря сообщения до его обработки нанесла бы ущерб вашему приложению. Или, если сообщение обработано наполовину, вредно. В большинстве случаев вам нужно будет использовать транзакции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...