activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Strachan" <james.strac...@gmail.com>
Subject Re: Sending message from EJB3: poor performances after a while
Date Wed, 09 Apr 2008 10:21:19 GMT
You are not using your J2EE providers JMS proxy to cache things; you
are using vanilla JMS.

So try using the PooledConnectionFactory from ActiveMQ instead.


On 09/04/2008, paoletto <paoletto@gmail.com> wrote:
>
>  i wrote the following Stateless Session Bean, and ran in a j2ee application
>  on jbossAS.
>
>  With the following implementation i have the problem that, if for example i
>  put the send in a for
>  to send 1000 messages (invocations) in a row, after about 200-250 the sender
>  start to slow down and at
>  about 300th message, it start to take 3-4 minute to send 1 single message.
>  then i have to stop the AS,
>  cause JVM goes to 100% load and the for cycle does not end.
>
>  i dont know what i did wrong here..
>  But what i can say is that if every time i also create a new
>  ActiveMQConnectionFactory, everything
>  slowes down quite much, but it does not suffer from the problem before (that
>  means, poor but constant performances)
>
>  any clue?
>
>
>
>
>
>
>  @Stateless
>  public class JmsFrontendBean  implements JmsFrontendRemote,JmsFrontendLocal
>  {
>         public static final String RemoteJNDIName =
>  JmsFrontendBean.class.getSimpleName() + "/remote";
>         public static final String LocalJNDIName =
>  JmsFrontendBean.class.getSimpleName() + "/local";
>
>  //      private Context ctx = null;
>         ActiveMQConnectionFactory connectionFactory = null;
>
>         @PostConstruct
>         private void postConstruct() {
>                 try {
>                         connectionFactory = new ActiveMQConnectionFactory("vm://localhost");
>                         connectionFactory.setOptimizeAcknowledge(true);
>                         connectionFactory.setUseAsyncSend(true);
>                         connectionFactory.setAlwaysSessionAsync(true);
>                 } catch (Exception e) {
>                         e.printStackTrace();
>                 }
>         }
>
>         @WebMethod
>      public void sendInvocation(InvocationRequest ir) {
>
>         try {
>             // Create a Connection
>             Connection connection = connectionFactory.createConnection();
>             connection.start();
>
>             // Create a Session
>             Session session = connection.createSession(false,
>  Session.AUTO_ACKNOWLEDGE);
>
>             // Create the destination (Topic or Queue)
>             Destination destination =
>  session.createQueue("queue."+ir.getQdest());
>
>             // Create a MessageProducer from the Session to the Topic or
>  Queue
>             MessageProducer producer = session.createProducer(destination);
>             //producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
>             producer.setDeliveryMode(DeliveryMode.PERSISTENT);
>
>             // Create a messages
>             JmsPayload payload = new JmsPayload();
>
>             String dataString = ir.getService() + "/" + ir.getMethod() + "?"
>  + ir.getParam();
>             payload.setDataString(dataString);
>
>             if (ir.getFileAttachments()  != null) {
>                 for (int i = 0; i < ir.getFileAttachments().length; i++) {
>                         String url = ir.getFileAttachments()[i];
>                         Attachment a = getAttachment(url);
>                         if (a != null) payload.addAttachment(a);
>                 }
>             }
>
>             ObjectMessage objmessage = session.createObjectMessage(payload);
>
>             // Tell the producer to send the message
>             System.out.println("Sending message to: " + ir.getQdest() + "
>  with values: "+dataString);
>             producer.send(objmessage);
>
>             // Clean up
>             producer.close();
>             session.close();
>             connection.stop();
>             connection.close();
>         } catch (Exception e) {
>             System.out.println("Caught: " + e);
>             e.printStackTrace();
>         }
>     }
>
> --
>  View this message in context: http://www.nabble.com/Sending-message-from-EJB3%3A-poor-performances-after-a-while-tp16583813s2354p16583813.html
>  Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
>


-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://open.iona.com

Mime
View raw message