> 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/
>
>