2017-08-16 6 views
0

activemqを使用してメッセージリスナーを追加しようとしました。私が遭遇したすべての例は、ネストされたonMessagesを使用しています。 Java eclipseはこれを認めていません(stackoverflowでも)。だから今私はそれを設定する方法が混乱しています。リスナーのonMessageフォームを削除すると、Eclipseはそこに実装する必要があると私に伝えます。また、クラス内でもonMessageメソッドを実装したいと考えています。ですから、私はonMessageをリスナーオブジェクト内とクラス内に持っています。どのようにこれを適切に処理できますか?私は自分のコードでonMessageを1つ持っている解決策を見ていません。JMS - メッセージリスナーonMessageは2回実装する必要がありますか?

EDIT:コードはエラーなしで実行され、メッセージを受け取ります。それでも、それはあなたがインライン匿名クラスとしてのMessageListenerを作成しているので、2 onMessages

public static class HelloWorldConsumer implements Runnable, MessageListener { 

     @Override 
     public void run() { 
      // TODO Auto-generated method stub 




      // Create a Connection 
      try { 

       ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL); 
       Connection connection = connectionFactory.createConnection(); 
       connection.start(); 
       Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 
       Topic topic = session.createTopic("Physical"); 
       MessageConsumer consumer = session.createConsumer(topic); 


       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) { 
       } 
       connection.close(); 
      } catch (JMSException ex) { 
       // Logger.getLogger(Consumer.class.getName()).log(Level.SEVERE, null, ex); 

      } 
     }//end method 

     @Override 
     public void onMessage(Message arg0) { 
      // TODO Auto-generated method stub 







     } 

    }} 

答えて

1

を持っている奇妙で、クラスHelloWorldConsumerはMessageListenerのを実装する必要はありません。

+0

ああ、私は単純に "MessageListenerを実装し、最後に空のonMessageを削除しますか? –

+0

はい、それをコード化した方法では、MessageListenerを実装する必要はありません –

関連する問題