자바 중간 메시지 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 으로 관리 할 수 있 습 니 다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.