Как написать минималистичный Java-клиент для OpenMQ

Пожалуйста, помогите новичку MQ написать свой первый Java-клиент, я немного заблудился в документации Oracle. У меня запущен и работает OpenMQ. В консоли администрирования OpenMQ я установил брокера с именем «MyFirstTest», 1 из 6 служб — «jms» (который кажется наиболее простым в использовании службой), эта служба также запущена и работает (говоря: состояние службы работает). Итак, я перехожу к интересной части. Как мне подключиться к брокеру «MyFirstTest», затем отправить сообщение и, наконец, прочитать это сообщение, возможно, от второго клиента.

Я думаю, что мне нужно найти уже существующую очередь вместо использования новой com.sun.messaging.Queue

Любой пример или ссылка приветствуется.

public class HelloWorldMessage {
public static void main(String[] args) {
    try {
        ConnectionFactory myConnFactory;
        Queue myQueue;

        myConnFactory = new com.sun.messaging.ConnectionFactory();
        Connection myConn = myConnFactory.createConnection();
        Session mySess = myConn.createSession(false, Session.AUTO_ACKNOWLEDGE);
        myQueue = new com.sun.messaging.Queue("MyFirstTest");

        //Create a message producer.
        MessageProducer myMsgProducer = mySess.createProducer(myQueue);

        //Create and send a message to the queue.
        TextMessage myTextMsg = mySess.createTextMessage();
        myTextMsg.setText("Hello World");
        System.out.println("Sending Message: " + myTextMsg.getText());
        myMsgProducer.send(myTextMsg);

        //Create a message consumer.
        MessageConsumer myMsgConsumer = mySess.createConsumer(myQueue);

        //Start the Connection created in step 3.
        myConn.start();

        //Receive a message from the queue.
        Message msg = myMsgConsumer.receive();

        //Retreive the contents of the message.
        if (msg instanceof TextMessage) {
            TextMessage txtMsg = (TextMessage) msg;
            System.out.println("Read Message: " + txtMsg.getText());
        }

        //Close the session and connection resources.
        mySess.close();
        myConn.close();

    } catch (Exception jmse) {
        System.out.println("Exception occurred : " + jmse.toString());
        jmse.printStackTrace();
    }
}

}


person Alex004    schedule 04.12.2012    source источник
comment
что ты уже испробовал? Любой код? В сети есть много примеров того, как создать JMS-издателя или подписчика (он не обязательно должен быть специфичен для OpenMQ).   -  person Adam Dyga    schedule 04.12.2012
comment
Я попробовал пример HelloWorldMessage. Но в примере используется новая очередь сообщений.   -  person Alex004    schedule 04.12.2012
comment
Что вы пробовали? напишите код, пожалуйста   -  person durron597    schedule 04.12.2012
comment
Хорошо, я добавил пример кода выше. В примере используется НОВАЯ очередь вместо существующей.   -  person Alex004    schedule 04.12.2012
comment
@ Alex004 Alex004 где ты взял этот пример? Есть пара вещей, которые делаются неправильно. Прежде всего, вместо непосредственного создания объекта Queue следует использовать метод Session.createQueue(). Независимо от этого, код создает очередь только в том случае, если она еще не существует, в противном случае используется уже существующая.   -  person Adam Dyga    schedule 04.12.2012
comment
Я нашел примеры в Oracle: docs.oracle.com/cd/ E19798-01/821-1796/index.html   -  person Alex004    schedule 04.12.2012


Ответы (1)


person    schedule
comment
надеюсь, это поможет :) Пожалуйста, дайте мне знать, если я неправильно понял ваш вопрос: P - person MazakiyaDeciphered; 04.12.2012
comment
Привет, MazakiyaDeciphered, почему ты используешь такое низкоуровневое соединение, как Socket? И в вашем примере вы используете 3 экземпляра client. Почему? - person Alex004; 06.12.2012