[jboss-user] [JBoss Messaging] - Re: Problem in topic consumers when lost connections

cbolanos do-not-reply at jboss.com
Wed Dec 3 04:21:17 EST 2008


Thank you very much for replaying...

Well, really I'm not reconecting in my code. When phisical connection goes down, then I can see warn messages from LeasePinger, and when the client recovers its connection warn messages don't appear. In this situation, the client can send again messages to the queue, but cannot receive messages from the topic.

This is a extract of my code, from the client's GUI you call the send information method, and the AVListener's onMessage method only prints the information received on that GUI.

...

public void run()
{
	try
	{
		initConnections();
		startTopicListener();
		status = RUNNING;
		while(status == RUNNING)
		{
			try
			{
				synchronized (this) 
				{
					this.wait(10000);
				}	
			}
			catch(InterruptedException ie)
			{
				ie.printStackTrace();
			}
		}//while
	}//try
	catch(Exception e)
	{
		e.printStackTrace();
	}//catch
	finally
	{
		finishTopicListener();
		finishConnections();
	}
	
}

public void sendInformation(Object info) throws Exception
{
	Queue queue = (Queue)ic.lookup(destinationName);
	MessageProducer sender = qsession.createProducer(queue);
	TextMessage message = qsession.createTextMessage(info.toString());
	message.setStringProperty(propClientId, clientId);
	sender.send(message);
}

public void initConnections() throws Exception
{
	ic = new InitialContext();
	ConnectionFactory cf = null;    
	cf = (ConnectionFactory)ic.lookup("/ConnectionFactory");
	connection = cf.createConnection(jmsUser, jmsPwd);		
	//Obligatorio indicar clientid para poder crear una durable suscription
	connection.setClientID(clientId);
	session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
	qsession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
	
}	

public void startTopicListener() throws Exception
{
	Topic topic = (Topic)ic.lookup(topicName);
	subscriber = session.createDurableSubscriber(topic, subscriptionName);
	avListener = new AVTopicListener();
	subscriber.setMessageListener(avListener);
	connection.start();
}


public void finishConnections() throws Exception
{
	if (connection != null)
	{
		connection.close();
	}
	if (ic != null)
	{
		ic.close();
	}		
}

public void finishTopicListener() throws Exception
{
	subscriber.close();
	session.close();
	qsession.close();
}

...



View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4193948#4193948

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4193948



More information about the jboss-user mailing list