자바 중간 메시지 ActiveMQ 사용 실례

우리 가 이 걸 왜 써 야 되 는 지 먼저 말 해 봐!
예 를 들 어 우 리 는 지금 이런 문 제 를 해결 해 야 한다.

이렇게 되면 우 리 는 중간 소식 실 을 사용 해 야 한다.

그리고 중간 소식 실 이 뭔 지 말씀 드 리 겠 습 니 다.
메시지 전송 메커니즘/메시지 대기 열의 중간 부품 기술 을 이용 하여 데이터 교 류 를 하고 분포 식 시스템 의 통합 에 사용한다.
자바 에 서 는 jms 에 대해 정 의 를 내 렸 습 니 다.이것 은 자바 메시지 의 통 일 된 인터페이스 입 니 다.ActiveMq 가 뭐 죠?이것 은 이 인터페이스의 일종 의 실현 으로 데이터베이스 연결 구동 과 마찬가지 로 서로 다른 제조 업 체 가 서로 다른 실현 을 가지 고 있 으 니 우 리 는 코드 로 어떻게 실현 하 는 지 빨리 봅 시다.
메 시 지 는 모두 두 가지 수신 과 발송 형식 이 있 습 니 다.점 대 점 과 게시 예약 모드,즉'1 대 1'과'1 대 1'입 니 다.
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 으로 관리 할 수 있 습 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기