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.

Reply via email to