Сессия JMS и принятие - PullRequest
       29

Сессия JMS и принятие

0 голосов
/ 17 мая 2011

Я новая JMS-арена, я создал несколько слушателей сообщений, но по одному слушателю на поток. У меня есть следующий слушатель сообщения, этот список сообщений передается объект сеанса, пока он создается. Затем, когда сообщение принято, этот слушатель сообщения обрабатывает сообщение, а затем фиксирует сеанс, как показано в коде. Закрытие сессий / подключений производится в хук отключения.

public class MyMessageListener implements MessageListener, ExceptionListener {
    private Session _session = null;

    public MyMessageListener(Session s) {
        _session = s;
    }

    @Override
    public void onMessage(Message arg0) {
        try {

            // Retrieve the data
            JMSBytesMessage bytesMessage = (JMSBytesMessage) arg0;
            byte[] payload = new byte[(int) bytesMessage.getBodyLength()];
            bytesMessage.readBytes(payload);
            String payloadString = new String(payload);
            ProcessMessage(payloadString);
            _session.commit();
            MessageCounter.Increment();
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }


public abstract void ProcessMessage(String theMessage);

}

Теперь меня беспокоит то, что если слушатель получает два сообщения одновременно, будет ли вероятность того, что сессия передаст оба сообщения?

1 Ответ

1 голос
/ 17 мая 2011

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

Вы создаете отдельный сеанс для каждого слушателя, верно?Это требование.Часть «все, начиная с сессии и далее, является однопоточной».

...