activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cafe <rmil...@estudiantes.uci.cu>
Subject Re: I can’t receive more than 2 messages simultaneously with DefaultMessageListenerContainer
Date Sat, 17 Feb 2007 02:44:18 GMT

sorry for the bare explanation. 

I have a listener (in the server side) who receive request for send files
(Streams):

public class RequestUpdateListener implements SessionAwareMessageListener {

	private JmsTemplate jmsTemplate;

	private String fileUpdateLocation;
	
	public void onMessage(Message request, Session session) throws JMSException
{


		ActiveMQConnectionFactory connectionFactory = ((PooledConnectionFactory)
jmsTemplate
				.getConnectionFactory()).getConnectionFactory();

		FileInputStream fis = null;
		try {
			fis = new FileInputStream(new File(fileUpdateLocation));
			StreamSender ss = new StreamSender();
			ss.send(connectionFactory, fis,uuid);

		} catch (Exception e) {
			e.printStackTrace();
		}
	
	}
.............

and a class:

public class StreamSender {

	public void send(ConnectionFactory connectionFactory, FileInputStream fis,
String uuid) {
		
		try {

			connection = (ActiveMQConnection) connectionFactory.createConnection();
			session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
			Destination destination = session.createQueue("TransferQueue");

			int deliveryMode = DeliveryMode.NON_PERSISTENT;
			int priority = 1;
			long timeToLive = 0;

			outputStreamMQ = connection.createOutputStream(destination, prop,
deliveryMode, priority,
					timeToLive);

		
			int total = 0;
			int reads;
			byte[] array = new byte[8 * 1024];

			while ((reads = fis.read(array)) != -1) {
				outputStreamMQ.write(array, 0, reads);
			}

			JmsUtils.commitIfNecessary(session);
......

and again the spring container:

	<bean id="updateContainer"
		class="org.springframework.jms.listener.DefaultMessageListenerContainer">
		<property name="concurrentConsumers" value="50" />
		<property name="connectionFactory" ref="jmsFactory" />
		<property name="destination" ref="requestUpdateQueue" />
		<property name="messageListener" ref="requestUpdateListener" />
	</bean>


 
and in the client side I have a listener who receive the Stream:

public class NotificationListener implements SessionAwareMessageListener {


	public void onMessage(Message response, Session session) throws
JMSException {

		String message = "xml descriptor";
		jmsTemplate.convertAndSend(requestUpdateQueue, message, new
MessagePostProcessor() {
			public Message postProcessMessage(Message message) throws JMSException {
				....
				return message;
			}
		});
		
		StreamReceiver receiver = new StreamReceiver();
		receiver.setConnectionFactory(connectionFactory);
		receiver.receive();

	}

public class StreamReceiver {


	public void receive() {
		...
		try {

			connection = (ActiveMQConnection) connectionFactory.createConnection();
			session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
			Destination destination = session.createQueue("TransferQueue");
			fisMQ = connection.createInputStream(destination, selector);
			fos = new FileOutputStream("...");

                        int reads;
			int total = 0;
			byte[] array = new byte[8 * 1024];

			while ((reads = fisMQ.read(array)) != -1) {
				fos.write(array, 0, reads);
				total += reads;
					}
			JmsUtils.commitIfNecessary(session);
.........

Now the problem arise when more than 2 client running in different machines
does a request simultaneously, the server (StreamSender) stop the transfer

what could be this?

-- 
View this message in context: http://www.nabble.com/I-can%E2%80%99t-receive-more-than-2-messages-simultaneously-with-DefaultMessageListenerContainer-tf3241539s2354.html#a9016161
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message