Простые клиенты JMS на OS X - PullRequest
2 голосов
/ 28 августа 2009

Я годами не касался J2EE, и мне нужно быстро подключить JMS-клиент для демонстрации. Я использую Eclipse на OS X, и я даже не могу начать, потому что я не могу понять, как получить необходимые библиотеки.

Предполагается, что это простое автономное приложение (не запущенное в контейнере), которое извлекает сообщения из темы.

1 Ответ

2 голосов
/ 28 августа 2009

Каждая реализация JMS имеет свой собственный набор библиотек, которые определяют, как вы получаете исходную фабрику соединений. Если у вас есть существующий сервер, с которого нужно извлекать сообщения, вам нужно изучить документацию этого сервера, чтобы определить, где найти библиотеки для размещения в вашем classpath и как создать исходную фабрику соединений. Если вы хотите создать сервер для демонстрации, я рекомендую использовать встроенный Active MQ брокер.

Если у вас есть фабрика соединений, опрос сообщений из какой-либо темы довольно прост. Вот пример кода, который можно вызвать, чтобы истощить тему его текущих сообщений.

  // Implementation specific code
 public void drainTopic(TopicConnectionFactory factory, String topicName, String subscriberId)
    // set factory properties like the server ID
    Connection conn = factory.createConnection();
    conn.start();
    Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
    Topic topic = session.createTopic(topicName);
    MessageConsumer consumer = session.createDurableSubscriber(topic, subscriberId);
    Message message;
    while (null != (message = consumer.receive(1000))) {
        // do work on the message 
    }
    conn.close();
}

Обратите внимание на использование надежного абонента. Это означает, что мне не нужно постоянно поддерживать одно соединение и обрабатывать ошибки, если они как-то истекают. Но поскольку подписка является надежной, сервер знает, как сохранить все сообщения, которые получает тема, пока я не подключен, и предоставить их при следующем подключении. Этот код будет одинаковым независимо от операционной системы хоста. Единственная сложность - создание фабрики соединений для конкретного провайдера.

...