Java中間メッセージActiveMQ使用例


まず、私たちはなぜこれを使うのですか?
例えば、私たちは今このような問題を解決します。

このように、私達は中間のニュースルームを使います。

じゃ、中間メッセージとは何かを話しましょう。
メッセージング機構/メッセージキューのミドルウェア技術を用いて、分散システムでの統合のためにデータ交流を行う。
JavaではJmsが定義されています。これはJavaメッセージの統一インターフェースです。ActiveMqとは何ですか?これはこのインターフェースの実現です。データベース接続ドライバと同じです。メーカーによって異なる実現があります。コードの使い方を早く見てみましょう。
メッセージは全部で2種類の受信と発送の形式があります。ポイントマッチとレビューモード、つまり「一対一」と「一対多」です。
1.パッケージ(maven):

  <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-client</artifactId>
      <version>5.13.4</version>
    </dependency>
2.書き込みを開始します。提供者(送信者)と消費者(受信者)は二つの異なる項目です。まず普通のmavenプロジェクトを作成します。ウェブプロジェクトのポイントマッチの方式ではありません。
ニュースプロバイダ

 public static void main(String[] args) throws JMSException {

    //      ,         activeMQ   
    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");

    //2.    
    Connection connection = connectionFactory.createConnection();

    //3.    
    connection.start();

    //4.  session(    )
    /*
    arg0       
    arg1             
     */
    Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

    //5.        ,  
    Queue firstQueue = session.createQueue("firstQueue");

    //6.            
//    Destination destination = ;//    
    MessageProducer producer = session.createProducer(firstQueue);

    //7.      
    TextMessage textMessage = session.createTextMessage("          ");

    //8.    
    producer.send(textMessage);
    //9.    
    producer.close();
    session.close();
    connection.close();

  }
ニュース消費者
前のステップは同じです。全部接続を作るのです。第6ステップだけが違っています。作成したのは消費者です。

public static void main(String[] args) throws JMSException, IOException {
    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");

    //2.    
    Connection connection = connectionFactory.createConnection();

    //3.    
    connection.start();

    //4.  session(    )
    /*
    arg0       
    arg1             
     */
    Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

    //5.        ,  
    Queue firstQueue = session.createQueue("firstQueue");



    //6.         
    MessageConsumer consumer = session.createConsumer(firstQueue);

    //7.    
    consumer.setMessageListener(new MessageListener() {
      @Override
      public void onMessage(Message message) {
        TextMessage textMessage = (TextMessage)message;
        try {
          System.out.println("      "+textMessage.getText());
        } catch (JMSException e) {
          e.printStackTrace();
        }
      }
    });

    //8.      
    //              
    System.in.read();


    //9.    
    consumer.close();
    session.close();
    connection.close();
  }
定期購読モードをリリースする(メッセージを発表した後、前に実行していた消費者だけが受信できます。メッセージはいずれの消費者に消費された後、起動した消費者は前のメッセージを消費できません。)
ニュースプロバイダ

 //      
    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");

    //2.    
    Connection connection = connectionFactory.createConnection();

    //3.    
    connection.start();

    //4.  session(    )
    /*
    arg0       
    arg1             
     */
    Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

    //5
    Topic topic = session.createTopic("first-topic");


    //6.            
//    Destination destination = ;//    
    MessageProducer producer = session.createProducer(topic);

    //7.      
    TextMessage textMessage = session.createTextMessage("          ");

    //8.    
    producer.send(textMessage);


    //9.    
    producer.close();
    session.close();
    connection.close();
消費者

    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");

    //2.    
    Connection connection = connectionFactory.createConnection();

    //3.    
    connection.start();

    //4.  session(    )
    /*
    arg0       
    arg1             
     */
    Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

    //5
    Topic topic = session.createTopic("first-topic");



    //6.         
    MessageConsumer consumer = session.createConsumer(topic);

    //7.    
    consumer.setMessageListener(new MessageListener() {
      @Override
      public void onMessage(Message message) {
        TextMessage textMessage = (TextMessage)message;
        try {
          System.out.println("      "+textMessage.getText());
        } catch (JMSException e) {
          e.printStackTrace();
        }
      }
    });
    //8.      
    //              
    System.in.read();
    //9.    
    consumer.close();
    session.close();
    connection.close();
まとめてみると、上のコードは全部似ていますか?Springで管理できます。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。