hi everyone!

i write a test program for consumer study, but i find i canot  receive the
first message in my second consumer!

i create two MessageProducers (producer1 and producer2) and two
MessageConsumers (consumer1 and consumer2) from two different Sessions. 

 i want run the code as producer1.send -> consumer1.receive ->
producer2.send -> consumer2.receive -> producer1.send -> .... ,but consumer2
can not receive at the first time, and second is ok.

here is my code:

public class TestConsumer
{
        public static void main(String[] args) throws JMSException
        {
                String url = "tcp://localhost:61616";
                ConnectionFactory connectionFactory = new 
ActiveMQConnectionFactory(url);

                Connection connection0 = connectionFactory.createConnection();
                connection0.start();
                final Session session0 = connection0.createSession(false,
                                Session.AUTO_ACKNOWLEDGE);
                Destination destination0 = session0.createQueue("test-in");
                // listen queue "test-in", and reply to queue "test-out"
                MessageConsumer consumer0 = 
session0.createConsumer(destination0);
                consumer0.setMessageListener(new MessageListener()
                {
                        public void onMessage(Message message)
                        {
                                try
                                {
                                        // System.out.println("receive ok!");
                                        Destination destination00 = session0
                                                        
.createQueue("test-out");
                                        MessageProducer producer0 = session0
                                                        
.createProducer(destination00);
                                        
producer0.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
                                        Message replyMessage = session0
                                                        
.createTextMessage("replyOK");
                                        producer0.send(replyMessage);
                                        // System.out.println("send ok!");
                                        producer0.close();
                                }
                                catch (Exception e)
                                {
                                        // ingore
                                }
                        }
                });

                Connection connection = connectionFactory.createConnection();
                connection.start();

                Session session1 = connection.createSession(false,
                                Session.AUTO_ACKNOWLEDGE);
                Destination destination1 = session1.createQueue("test-in");
                MessageProducer producer1 = 
session1.createProducer(destination1);
                producer1.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
                TextMessage message = session1.createTextMessage("hello");
                // # producer1 send 1
                producer1.send(message);

                Destination destination11 = session1.createQueue("test-out");
                MessageConsumer consumer1 = 
session1.createConsumer(destination11);
                // # consumer1 receive 1
                System.out.println(consumer1.receive(3000));

                Session session2 = connection.createSession(false,
                                Session.AUTO_ACKNOWLEDGE);
                Destination destination2 = session2.createQueue("test-in");
                MessageProducer producer2 = 
session2.createProducer(destination2);
                producer2.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
                TextMessage message2 = session1.createTextMessage("hello");
                // # producer2 send 1
                producer2.send(message2);

                Destination destination22 = session2.createQueue("test-out");
                MessageConsumer consumer2 = 
session2.createConsumer(destination22);
                *// # consumer2 receive 1 >>>>>> here, can not receive message, 
                //although i can see "test-out" queue has one message via web 
console!
                System.out.println(consumer2.receive(3000));*

                // # producer1 send 2
                producer1.send(message);
                // # consumer1 receive 2
                System.out.println(consumer1.receive(3000));

                // # producer2 send 2
                producer2.send(message2);
                // # consumer2 receive 2
                System.out.println(consumer2.receive(3000));

                connection.close();
                connection0.close();
        }
}

i had already read the page "I do not receive messages in my second
consumer"
http://activemq.apache.org/i-do-not-receive-messages-in-my-second-consumer.html
and changed the connection url as:
String url = "tcp://localhost:61616?jms.prefetchPolicy.all=1";

but it does't work.


can anybody tell me why?



--
View this message in context: 
http://activemq.2283324.n4.nabble.com/I-do-not-receive-the-first-message-in-my-second-consumer-tp4667344.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to