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/