Получает ли JMSClient (который также является производителем в некоторых случаях) свои собственные сообщения, которые он отправляет - PullRequest
2 голосов
/ 28 июля 2010

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

Ответы [ 3 ]

2 голосов
/ 30 июля 2010

Я получил ответ .. Существует флаг noLocal, который можно установить, чтобы не получать сообщения от одного и того же соединения

1 голос
/ 28 июля 2010

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

0 голосов
/ 28 июля 2010

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

    myConnFactory = new com.sun.messaging.ConnectionFactory();
    Connection myConn = myConnFactory.createConnection();
    //Create a session within the connection.
    Session mySess = myConn.createSession(false, Session.AUTO_ACKNOWLEDGE);
    myQueue = new com.sun.messaging.Queue("world");

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

    //Create a message consumer. (Use if going to read from the queue)
    MessageConsumer myMsgConsumer = mySess.createConsumer(myQueue);

    //Start the Connection
    myConn.start();

    //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);

    // The rest of the code is for reading from a queue - optional
    //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());
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...