JMS 입문 강좌

24056 단어 jms
1.ActiveMQ 다운로드
공식 홈 페이지 에 다운로드:http://activemq.apache.org/
2.ActiveMQ 실행
apache-activemq-5.5.1-bin.zip 압축 을 풀 고 apache-activemq-5.5.1\\bin\activemq.bat 를 더 블 클릭 하여 ActiveMQ 프로그램 을 실행 합 니 다.
ActiveMQ 시작 후 로그 인:http://localhost:8161/admin/FirstQueue 라 는 이름 의 Queue 를 만 듭 니 다.
3.이 클립 스 프로젝트 를 만 들 고 실행
procject:ActiveMQ-5.5 를 만 들 고 apache-activemq-5.5.1\lib 디 렉 터 리 에 필요 한 jar 파일 을 가 져 옵 니 다.프로젝트 구 조 는 다음 그림 과 같 습 니 다.
JMS入门教程_第1张图片
3.1.Sender.java
package com.xuwei.activemq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

public class Sender {
private static final int SEND_NUMBER = 5;

public static void main(String[] args) {
// ConnectionFactory : ,JMS
ConnectionFactory connectionFactory;
// Connection :JMS JMS Provider
Connection connection = null;
// Session:
Session session;
// Destination : ; .
Destination destination;
// MessageProducer:
MessageProducer producer;
// TextMessage message;
// ConnectionFactory , ActiveMq jar
connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD,
"tcp://localhost:61616");
try {
//
connection = connectionFactory.createConnection();
//
connection.start();
//
session = connection.createSession(Boolean.TRUE,
Session.AUTO_ACKNOWLEDGE);
// session xingbo.xu-queue queue, ActiveMq console
destination = session.createQueue("FirstQueue");
// 【 】
producer = session.createProducer(destination);
// , ,
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
// , , ,
sendMessage(session, producer);
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != connection)
connection.close();
} catch (Throwable ignore) {
}
}
}

public static void sendMessage(Session session, MessageProducer producer)
throws Exception {
for (int i = 1; i <= SEND_NUMBER; i++) {
TextMessage message = session
.createTextMessage("ActiveMq " + i);
//
System.out.println(" :" + "ActiveMq " + i);
producer.send(message);
}
}
}


3.2.Receiver.java
package com.xuwei.activemq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

public class Receiver {
public static void main(String[] args) {
// ConnectionFactory : ,JMS
ConnectionFactory connectionFactory;
// Connection :JMS JMS Provider
Connection connection = null;
// Session:
Session session;
// Destination : ; .
Destination destination;
//
MessageConsumer consumer;
connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD,
"tcp://localhost:61616");
try {
//
connection = connectionFactory.createConnection();
//
connection.start();
//
session = connection.createSession(Boolean.FALSE,
Session.AUTO_ACKNOWLEDGE);
// session xingbo.xu-queue queue, ActiveMq console
destination = session.createQueue("FirstQueue");
consumer = session.createConsumer(destination);
while (true) {
// , , 100s
TextMessage message = (TextMessage) consumer.receive(100000);
if (null != message) {
System.out.println(" " + message.getText());
} else {
break;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != connection)
connection.close();
} catch (Throwable ignore) {
}
}
}
}


4.주의사항
마지막 수신 자 와 발송 자 는 서로 다른 기계 에서 테스트 한다프로젝트 가 인용 한 jar 는 마지막 으로 ActiveMQ 의 lib 에서 찾 습 니 다.버 전 충돌 이 일어나 지 않 습 니 다
5.테스트 과정
단일 컴퓨터 에서 테스트 하기 때문에 두 개의 eclipse 를 켜 야 합 니 다.모든 eclipse 는 자신의 workspace 가 있 습 니 다.저 희 는 eclipse 1 에서 Receiver 를 실행 하고 eclipse 2 에서 Sender 를 실행 합 니 다.
처음에 eclipse 1 에서 Receiver 를 실행 한 후 console 인터페이스 에 아무런 정보 가 없습니다.eclipse 2 에서 Sender 를 실행 한 후 eclipse 2 의 console 는 다음 과 같은 정 보 를 표시 합 니 다.
발송 메시지:ActiveMq 가 보 낸 메시지 1 발송 메시지:ActiveMq 가 보 낸 메시지 2 발송 메시지:ActiveMq 가 보 낸 메시지 3 발송 메시지:ActiveMq 가 보 낸 메시지 4 발송 메시지:ActiveMq 가 보 낸 메시지 5
eclipse 1 로 돌아 가면 console 인터페이스 에 다음 과 같은 정보 가 나타 납 니 다.
받 은 메시지 ActiveMq 보 낸 메시지 1 받 은 메시지 ActiveMq 보 낸 메시지 2 받 은 메시지 ActiveMq 보 낸 메시지 3 받 은 메시지 ActiveMq 보 낸 메시지 4 받 은 메시지 ActiveMq 보 낸 메시지 5
 PS:2012-2-27
오늘 테스트 는 두 개의 eclipse 를 열지 않 아 도 됩 니 다.하나의 eclipse 다음 페이지 에서 여러 개의 프로그램 을 시작 할 수 있 고 여러 개의 console 가 있 습 니 다.위의 Receiver.java 에서 비교적 큰 시간 을 설정 합 니 다.예 를 들 어 receive(500000)는 다음 코드 와 같 습 니 다.
TextMessage message = (TextMessage) consumer.receive(500000);

이 럴 때 Receiver.java 를 실행 하면 이 Receiver.java 가 500 초 동안 실 행 됩 니 다.eclipse 에서 발견 할 수 있 습 니 다.

그 빨간색 사각형 을 누 르 면 수 동 으로 프로그램 을 정지 할 수 있 습 니 다.
receiver 를 실행 한 후에 저 희 는 sender 를 실행 하고 있 습 니 다.sender 를 실행 한 후에 저 희 는 receiver 의 console 로 전환 해 야 합 니 다.다음 그림 과 같 습 니 다.
JMS入门教程_第2张图片

좋은 웹페이지 즐겨찾기