Как работает MessageListener в JMS?Может ли он загружать сообщения в очередь в режиме реального времени? - PullRequest
0 голосов
/ 29 января 2019

Я хочу загружать сообщения JMS в очередь в режиме реального времени, если жизнеспособный потребитель.setMessageListener (myListener) и как он работает?

Я не уверен, как работает слушатель.Я написал слушатель, как показано ниже.

public class JmsMessageListenerExample {
public static void main(String[] args) throws URISyntaxException, Exception {
    BrokerService broker = BrokerFactory.createBroker(new URI(
            "broker:(tcp://localhost:61616)"));
    broker.start();
    Connection connection = null;
    try {
        // Producer
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
                "tcp://localhost:61616");
        connection = connectionFactory.createConnection();
        Session session = connection.createSession(false,
                Session.AUTO_ACKNOWLEDGE);
        Queue queue = session.createQueue("customerQueue");
        String payload = "Important Task";
        Message msg = session.createTextMessage(payload);
        MessageProducer producer = session.createProducer(queue);
        System.out.println("Sending text '" + payload + "'");
        producer.send(msg);

        // Consumer
        MessageConsumer consumer = session.createConsumer(queue);
        consumer.setMessageListener(new ConsumerMessageListener("Consumer"));
        connection.start();
    } finally {
        if (connection != null) {
            connection.close();
        }
        broker.stop();
    }
}

После того, как я запустил JmsMessageListenerExample, он быстро завершился, и я не получил никаких сообщений.Если слушатель должен продолжать работать, пока я не остановлю это?

1 Ответ

0 голосов
/ 29 января 2019

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

Кроме того, когда вы говорите «загрузить сообщения JMS в очередь в режиме реального времени», яПредположим, вы имеете в виду «использовать сообщения JMS из очереди как можно скорее, когда очередь их получает».Если это так, то приемник сообщений JMS является правильным подходом.

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