java - Difference in creating ActiveMQ listeners in separate threads or in a same thread -
i have following 2 cases of code activemq listeners. expecting case 2 faster not ...
case 1: here creating multiple listeners of activemq in main function
public class filereceiver { public static void main(string[] args) { list<messagereceiver> messagereceiverlist = new arraylist<messagereceiver>(); messagereceiver msgreceiver1 = new messagereceiver(); messagereceiverlist.add(msgreceiver1); msgreceiver1.run(); messagereceiver msgreceiver2 = new messagereceiver(); messagereceiverlist.add(msgreceiver2); msgreceiver2.run(); messagereceiver msgreceiver3 = new messagereceiver(); messagereceiverlist.add(msgreceiver3); msgreceiver3.run(); } } case 2: here creating multiple listeners of activemq in multiple threads
public class filereceiver { public static void main(string[] args) { list<messagereceiver> messagereceiverlist = new arraylist<messagereceiver>(); for(int = 0 ; < 3 ; i++) { messagereceiver msgreceiver = new messagereceiver(); thread thread = new thread(msgreceiver); thread.start(); messagereceiverlist.add(msgreceiver); system.out.println("listener " + + " started."); } } } here messagereceiver class using ...
class messagereceiver implements runnable,messagelistener { private int nummsgsreceived = 0; private void start() { try { activemqconnectionfactory connectionfactory = new activemqconnectionfactory( "tcp://localhost:61616"); connection connection = connectionfactory.createconnection(); connection.start(); activemqsession session = (activemqsession) connection .createsession(false, session.auto_acknowledge); destination ftqueue = session.createqueue("temp.dest"); messageconsumer consumer = session.createconsumer(ftqueue); consumer.setmessagelistener(this); } catch (exception e) { e.printstacktrace(); } } public void onmessage(message msg) { incnummsgsreceived(); try { thread.sleep(100); } catch (interruptedexception e) { // todo auto-generated catch block e.printstacktrace(); } } public void run() { start(); } } in both of cases able receive 30 messages per second. shouldn't case 2 faster running on 3 separate threads?
messagelistener onmessage called context of dispatch thread inside of session created consumer. doesn't matter how many threads create because thread that's invoking onmessage call same. in case threads no real work since message continue come same 3 connection / session instances have 3 session threads dispatching same messages in either case.
Comments
Post a Comment