I'll implement your current comments and see what happens. I'm still not sure where to set Session.DUPS_OK_ACKNOWLEDGE since I am using the Spring JmsTemplate and the template creates the sessions for you on the fly. I will have a dig about in the javadoc. Any other ideas how to make the whole process faster?
On the client side I am using a pool of consumers (via the Spring SimpleMessageListenerContainer) <bean id="listenerContainer" class="org.springframework.jms.listener.SimpleMessageListenerContainer"> <property name="concurrentConsumers" value="4"/> <property name="connectionFactory" ref="connectionFactory" /> <property name="destination" ref="temporaryQueue" /> <property name="messageListener" ref="client" /> </bean> My connection factory on the client side is <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"> <property name="targetConnectionFactory"> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL"> <value>tcp://192.168.160.86:61616?jms.prefetchPolicy.queuePrefetch=100</value> </property> <property name="useAsyncSend"><value>TRUE</value></property> <property name="optimizeAcknowledge"><value>TRUE</value></property> </bean> </property> </bean> What I am doing is........ client produces message -> Broker (main queue) -> server consumes message from main queue server sends reply (produces message) -> broker(temp queue) -> client consumes message from temp queue Just FYI on the server side a number of threads are started where each thread reads from the main queue and then simply puts a response on the temp queue. I don't use a SimpleMessageListenerContainer on the server side just a number of pre-configured threads (8 threads) that use the same spring single connection factory and JmsTemplates......... <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"> <property name="targetConnectionFactory"> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL"> <value>tcp://localhost:61616?jms.prefetchPolicy.queuePrefetch=100</value> </property> <property name="useAsyncSend"><value>TRUE</value></property> <property name="optimizeAcknowledge"><value>TRUE</value></property> </bean> </property> </bean> <bean id="requestServer" singleton="false" class="com.frenchiesystems.ttre.server.implemented.RequestServer"> <property name="noOfThreads"><value>8</value></property> <property name="replyJmsTemplate"><ref local="replyJmsTemplate"/></property> <property name="receiveJmsTemplate"><ref local="receiveJmsTemplate"/></property> </bean> <bean id="receiveJmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory"><ref local="connectionFactory"/></property> <property name="defaultDestination"> <bean class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg index="0"><value>MAIN_QUEUE</value></constructor-arg> </bean> </property> </bean> <bean id="replyJmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory"><ref local="connectionFactory"/></property> </bean> James.Strachan wrote: > > On 1/15/07, Paul French <[EMAIL PROTECTED]> wrote: >> >> ActivemQ 4.1.0 >> >> >> Where do I set Session.DUPS_OK_ACKNOWLEDGE this? > > http://java.sun.com/j2ee/1.4/docs/api/javax/jms/Connection.html#createSession(boolean,%20int) > > >> I'm trying to increase >> performance of the messaging layer and I'm going through the performance >> guide at >> http://devzone.logicblaze.com/site/apache-activemq-performance-tuning-guide.html >> http://devzone.logicblaze.com/site/apache-activemq-performance-tuning-guide.html >> >> I can send out a 1000 messages a second no problem but the rest of the >> messaging layer is very slow so I need some help here. >> >> My scenario is client creates many messages and sends async to the broker >> (one connection, one session). The client also creates a temporary queue >> to >> receive replies on. The client also starts a number of consumers to >> listen >> on the temp queue. >> >> A consumer consumes the messages and then replies by placing a message on >> the temporary queue. >> >> My client receives the reply via the temp queue. >> >> >> I have no need for Quality Of Service or persistence. So far for the >> cleint >> I have set the following properties to improve performance: >> >> <bean id="connectionFactory" >> class="org.springframework.jms.connection.SingleConnectionFactory"> >> <property name="targetConnectionFactory"> >> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> >> <property name="brokerURL"> >> >> <value>tcp://192.168.160.86:61616?jms.prefetchPolicy.queuePrefetch=100</value> >> </property> >> <property name="useAsyncSend"><value>TRUE</value></property> >> <property >> name="optimizeAcknowledge"><value>TRUE</value></property> >> </bean> >> </property> >> </bean> >> >> Is optimizeAcknowledge related to Session.DUPS_OK_ACKNOWLEDGE? > > I wouldn't worry about optimizeAcknowledge > > You should make sure your producer is using non-persistent mode. > > >> For the server side I have used the same properties for now: >> >> <bean id="connectionFactory" >> class="org.springframework.jms.connection.SingleConnectionFactory"> >> <property name="targetConnectionFactory"> >> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> >> <property name="brokerURL"> >> >> <value>tcp://localhost:61616?jms.prefetchPolicy.queuePrefetch=100</value> >> </property> >> <property name="useAsyncSend"><value>TRUE</value></property> >> <property >> name="optimizeAcknowledge"><value>TRUE</value></property> >> </bean> >> </property> >> </bean> >> >> >> The server and broker run on the same machine for this test but will not >> in >> production hence I have not bothered trying to embed the broker in the >> server. >> >> Baiscally for this test my client is punching out about 1000 messages and >> I >> want to see how long it takes to get replies. At the moment I am pumping >> out >> about 1000 messages in about 2 seconds but it takes 20 seconds to get the >> 1000 replies. I am obviously missing something here?? Any pointers would >> be >> great. > > Are you using a pool of consumers to process the requests? Otherwise > you are single-threading things which is kinda slow. Also I'd leave > high prefetch values (say 5000 at least) on consumers on both sides. > > -- > > James > ------- > http://radio.weblogs.com/0112098/ > > -- View this message in context: http://www.nabble.com/Session.DUPS_OK_ACKNOWLEDGE-tf3016262.html#a8387795 Sent from the ActiveMQ - User mailing list archive at Nabble.com.