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.