activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From lrklx <lr...@163.com>
Subject I do not receive the first message in my second consumer!
Date Wed, 22 May 2013 13:43:18 GMT
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.

Mime
View raw message