Hi Jim !! 8^D
With RMi the performance improves so nice !!! The problem I faced with the time does not occurr!!! I got 1 message =4 miliseconds (GREAT!!!! ) and the time does not affect if I run with one or 10 threads , but I really need to run in a scalable environment. I can't use rmi if the processes must run on a separate machine ( I have to send messages to a queue from a servlet with load balance!!) correct ??? What about the tcp connection, is that the expected behavior ?? Any tip about the best way to go in a load balance servlet environment (Tcp/RMi/....)???
thanks again Jim!!!
Tamoyo C. Vitali Jr.
Gerente de Desenvolvimento
SupportComm
Rua da Assembléia, 100 - 19 Andar
Rio de Janeiro, RJ 20011-000
Tel: +55 21 3806-3340 / Cel: +55 21 8123-5182
mailto:***@supportcomm.com.br
www.supportcomm.com.br
-----Original Message-----
From: Tamoyo Vitali
Sent: terça-feira, 15 de abril de 2003 09:58
To: '***@comware.com.au'; 'openjms-***@lists.sourceforge.net'
Subject: RE: [openjms-developer] Multi Thead Producer
Sorry forgot: I am using embebed JNDI 8^D
cheers
Tamoyo C. Vitali Jr.
Gerente de Desenvolvimento
SupportComm
Rua da Assembléia, 100 - 19 Andar
Rio de Janeiro, RJ 20011-000
Tel: +55 21 3806-3340 / Cel: +55 21 8123-5182
mailto:***@supportcomm.com.br
www.supportcomm.com.br
-----Original Message-----
From: Tamoyo Vitali
Sent: terça-feira, 15 de abril de 2003 09:56
To: '***@comware.com.au'; openjms-***@lists.sourceforge.net
Subject: RE: [openjms-developer] Multi Thead Producer
Thanks Jim 8^D!!
I agree with you, it seems to be synchronization but I can't imagine where it is occurring. Remeber when I run 2 separates process (with one thread each one) the time are not affected. I am running on a pentium 4 1ghz hadhat 7.3 1gb ram with mysql Ver 11.18 Distrib 3.23.56 and tcp connection and I got 1 msg 80 mileseconds so 1 sec = 12,5 messages, but this time does not change if I run different processes at the same time. (I am sory to be repetitive!!!)
this is a very simple code, I forgot mentioned I use tcp connection, please take a look at the code below :
import javax.naming.*;
import javax.jms.*;
import java.util.*;
import java.io.*;
import java.net.*;
public class queue2 extends Thread {
private static String arg;
int q;
private static long max =0;
long ini;
private String url = "tcp://192.168.255.81:3035";
private String modeType = "org.exolab.jms.jndi.mipc.IpcJndiInitialContextFactory";
private String queue_name = null;
private QueueConnectionFactory factory = null;
private QueueConnection connection = null;
private QueueSession session = null;
private Queue queue = null;
private QueueSender sender = null;
private TextMessage message = null;
private Properties props = null;
private Context context = null;
private int priority = 9;
//private static long timeToLive = 20000;
private String TEXTO_MSGS = "apenas um teste";
queue2 (int i) { q=i;}
public void run() {
int ii =0 ;
ini = System.currentTimeMillis();
queue_name = "fila0";
try {
props = new Properties();
props.put(Context.PROVIDER_URL,url);//url
props.put(Context.INITIAL_CONTEXT_FACTORY,modeType); //modeType
} catch (Exception e) {
e.printStackTrace(System.err);
}
try {
context = new InitialContext(props);
factory = (QueueConnectionFactory)context.lookup("JmsQueueConnectionFactory");
} catch (NamingException e) {
e.printStackTrace(System.err);
}
try {
if( factory != null ) {
connection = factory.createQueueConnection();
connection.start();
session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); //(true, 0)
queue = (Queue)context.lookup(queue_name);
sender = session.createSender(queue);
int delivery_mode = DeliveryMode.PERSISTENT; //DeliveryMode.PERSISTENT;
for (ii = 0; ii<500;ii++) {
ini = System.currentTimeMillis() ;
message = session.createTextMessage();
message.setText( TEXTO_MSGS );
//sender.send(message, delivery_mode, priority, 0); //Nao enviar assim qdo usar o OpenJMS
sender.send( message );
ini = System.currentTimeMillis() - ini ;
System.out.println(q + " " + ii + " end " + ini);
}
}
} catch (JMSException e) {
System.out.println("Exception JMSException occurred: " + e.toString());
e.printStackTrace();
} catch (javax.naming.NamingException NaEx) {
System.out.println("Exception NamingException occurred: " + NaEx.toString());
NaEx.printStackTrace();
} finally {
if (connection != null) {
try {
connection.close();
} catch (JMSException e) {}
}
}
}
public static void main(String args[]) {
Thread t;
for (int i=0; i<1; i++) {
t = new queue2(i);
t.start();
}
}
}
Tamoyo C. Vitali Jr.
Gerente de Desenvolvimento
SupportComm
Rua da Assembléia, 100 - 19 Andar
Rio de Janeiro, RJ 20011-000
Tel: +55 21 3806-3340 / Cel: +55 21 8123-5182
mailto:***@supportcomm.com.br
www.supportcomm.com.br
-----Original Message-----
From: Jim Alateras [mailto:***@comware.com.au]
Sent: segunda-feira, 14 de abril de 2003 18:14
To: Tamoyo Vitali; openjms-***@lists.sourceforge.net
Subject: RE: [openjms-developer] Multi Thead Producer
Are you running the OpenJMS server with tcp or rmi? The only way I can
explain it, without looking at the code, is that there seems to be related
to synchronization either in your code, the OpenJMS client library or the
OpenJMS server.
cheers
</jima>
-----Original Message-----
Tamoyo Vitali
Sent: Tuesday, April 15, 2003 6:16 AM
Subject: [openjms-developer] Multi Thead Producer
Hi all!!
I am writing a java program to send messages to a queue in a
multithread scenario. Each thread has exclusive objects such as
connection, queue, sender, session. Inside each thread there is a
loop that sends sequentially messages. When I run this program
witha single thread, the time to send each message in a
persistent autoacknolodge mode is 80 miliseconds, When I run the
same program with 2 theads the time to send each message
increases to 160 ms, with 3 theads it goes to 240 ms, with 4
threads 320 ms a so on... This is the expected results (the time
to deliver increases deppendin on the number os queuesenders) ???
Is I run the same program in two diferents processes each one
with just one thread they ane not affected and both takes 80 ms
for each message) Am I doind any wrong?
best regards!!!
Tamoyo C. Vitali Jr.
Gerente de Desenvolvimento
SupportComm
Rua da Assembléia, 100 - 19 Andar
Rio de Janeiro, RJ 20011-000
Tel: +55 21 3806-3340 / Cel: +55 21 8123-5182
www.supportcomm.com.br
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
openjms-developer mailing list
https://lists.sourceforge.net/lists/listinfo/openjms-developer