> I can't see any reason why anyone would ever not want to use ActiveMQ ;)
I agree. However, based on his code he's using 5.x right now, and I can imagine a day when he'd want to move to ActiveMQ Artemis. :) Justin On Fri, Aug 18, 2017 at 1:59 PM, Timothy Bish <tabish...@gmail.com> wrote: > On 08/18/2017 02:49 PM, Justin Bertram wrote: > >> I see a couple of potential problems with this code: >> >> 1) It's littered with non-JMS code (e.g. ActiveMQConnectionFactory, >> ActiveMQConnection). You may not care about that if this application will >> only ever integrate with ActiveMQ, but if you think you'll ever want to >> use >> any other kind of JMS broker then you'll have to rewrite some of this >> stuff >> when you migrate. APIs are standardized for a reason. Deviate at your >> own >> risk. >> > > I can't see any reason why anyone would ever not want to use ActiveMQ ;) > > > >> 2) Every time you invoke register() you create a new Connection, Session, >> Consumer, etc. This is an anti-pattern. Connection objects are "heavy" >> and are meant to be shared. >> >> 3) You do not keep track of any of the resources you create (i.e. >> Connection, Session, Consumer) so you have no way to clean them up. >> >> > maybe the strcture is not good at all >> >> I'd agree with that. >> >> >> Justin >> >> On Fri, Aug 18, 2017 at 12:59 PM, Juleian <julian.herb...@gmx.net> wrote: >> >> That sounds reasonable actually. The only problem I also somehow have is >>> when >>> register is called the method "is stuck" in the thread that is opened or >>> not? I do not see how I can return a value with this structure (maybe the >>> strcture is not good at all, its my first real programming task). >>> >>> public register(String topicName) { >>> >>> >>> >>> >>> >>> try { >>> >>> // create connection to Broker, create Session >>> and >>> Consumer >>> >>> ActiveMQConnectionFactory connectionFactory = >>> new >>> ActiveMQConnectionFactory( >>> "tcp://localhost:61616"); >>> ActiveMQConnection connection = >>> (ActiveMQConnection) >>> connectionFactory.createConnection(); >>> connection.start(); >>> Session session = connection.createSession(false >>> , >>> Session.AUTO_ACKNOWLEDGE); >>> Topic topicObject = >>> session.createTopic(topicName) >>> ; >>> MessageConsumer consumer = >>> session.createConsumer( >>> topicObject); >>> >>> >>> //check if topic is available on Broker >>> >>> >>> >>> DestinationSource ds = connection. >>> getDestinationSource(); >>> >>> Set<ActiveMQTopic> topics = ds.getTopics(); >>> String compare = topicName; >>> int count = 0; >>> >>> for(ActiveMQTopic topic : topics){ >>> >>> >>> >>> if(compare.equals(topic.getTopicName())) { >>> >>> System.out.println("Found " + >>> topic.getTopicName()); >>> count = count + 1; >>> >>> >>> } >>> >>> } >>> >>> if(count == 0){ >>> >>> >>> System.out.println("The topic you want >>> to >>> subscribe to is not >>> found."); >>> System.out.println("Please try again >>> with >>> a valid topic name."); >>> >>> return; >>> >>> } >>> >>> >>> >>> >>> //register Component at mongoDB >>> >>> >>> >>> MessageListener listner = new MessageListener() >>> { >>> >>> @Override >>> public void onMessage(Message message) >>> { >>> try { >>> if (message instanceof TextMessage) { >>> TextMessage textMessage = (TextMessage) >>> message; >>> System.out.println("Received message : " >>> + textMessage.getText() + "'"); >>> } >>> } catch (JMSException e) { >>> System.out.println("Caught:" + e); >>> } >>> } >>> }; >>> consumer.setMessageListener(listner); >>> >>> try { >>> System.in.read(); >>> } catch (IOException e) { >>> } >>> >>> } catch (JMSException ex) { >>> // Logger.getLogger(Consumer.class.getName()).log(Level. >>> SEVERE, >>> null, ex); >>> >>> } >>> >>> >>> >>> } >>> >>> >>> >>> >>> -- >>> View this message in context: http://activemq.2283324.n4. >>> nabble.com/Close-message-listener-decoupled-tp4729814p4729816.html >>> Sent from the ActiveMQ - User mailing list archive at Nabble.com. >>> >>> > -- > Tim Bish > twitter: @tabish121 > blog: http://timbish.blogspot.com/ > >