ActiveMQ 배치 및 수신 메시지 발송
7732 단어 자바 기술 자료
하나 다운로드 하 다.
다운로드 주소:http://activemq.apache.org/내 가 사용 하 는 버 전 은 현재 최신 5.8.0 이다.
다운로드 버 전 은 윈도 와 리 눅 스 두 가지 버 전이 있 으 며 모두 32 비트 와 64 비트 로 나 뉜 다.필요 에 따라 다운 로드 를 선택 하 세 요.
둘째, 설치 하 다.
windows 32 비트 버 전 (apache - activemq - 5.8.0 - bin. zip) 을 다운로드 한 후 설치 해 야 할 디 렉 터 리 에 직접 압축 을 풀 거나 현재 디 렉 터 리 에 직접 압축 을 풀 어도 됩 니 다. 압축 을 풀 고 설치 도 완료 되 었 습 니 다.
압축 해제 후 디 렉 터 리 는 위의 그림 과 같이 예제 와 문서, 그리고 모든 jar 패키지 가 포함 되 어 있 습 니 다.
셋째, 운행 하 다.
bin 디 렉 터 리 (apache - activemq - 5.8.0\bin) 에 들 어가 activemq. bat 를 두 번 누 르 면 실 행 됩 니 다. 캡 처 는 다음 과 같 습 니 다.
이 때 는 ActiveMQ 가 이미 실행 되 고 있 음 을 나타 낸다. 물론 정상 적 인 생산 환경 에서 서비스 로 배경 에서 실행 되 고 시스템 이 시 작 됨 에 따라 시작 할 수 있다.
넷, 테스트
ActiveMQ 자체 관리 시스템 을 가지 고 방문 하 였 습 니 다.http://localhost:8161/admin/사용자 이름과 비밀 번 호 를 입력 해 야 하 는 페이지 가 다음 과 같 습 니 다.
기본 사용자 이름과 비밀 번 호 는 admin 이 고 들 어가 면 주 인터페이스 입 니 다.
이 인터페이스 에서 우 리 는 대기 열 과 다른 기능 을 관리 할 수 있 습 니 다. 아래 의 계속 을 위해 우 리 는 여기에서 Queue 와 Topic 를 만 들 수 있 습 니 다.
디 렉 터 리 에 있 는 Queues 를 누 르 면 Queue 생 성 페이지 에 들 어가 서 Queue 이름 을 입력 하고 Create 를 누 르 면 G2Queue 의 queue 대기 열 이 생 성 됩 니 다.
이렇게 수 동 으로 만 들 지 않 아 도 됩 니 다. 송신 단 에 Queue 나 Topic 이름 을 지정 하면 위 에 있 는 choice. queue 와 First Queue 가 모두 제 테스트 프로그램 일 때 프로그램 에서 지정 한 Queue 이름 이 자동 으로 생 성 됩 니 다.
같은 방식 으로 Topic 을 만 듭 니 다. 다음 과 같 습 니 다.
다섯, 소식 을 보내다
새 프로젝트 를 만 듭 니 다. 웹 프로젝트 이름 은 ActiveMQ 입 니 다. ActiveMQ 의 jar 패 키 지 를 도입 합 니 다. 전체 프로젝트 구 조 는 다음 과 같 습 니 다.
이 코드 는 인터넷 에서 직접 copy 입 니 다. 다만 약간 수정 되 었 을 뿐 입 니 다.
import java.util.Random;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class SendMessage {
private static final String url = "tcp://localhost:61616";
private static final String QUEUE_NAME = "G2Queue";
public void sendMessage() throwsJMSException {
// JMS JMSProvider
Connection connection = null;
try {
// ,JMS
// ConnectionFactory , ActiveMq jar
ConnectionFactory connectionFactory = newActiveMQConnectionFactory(url);
connection = (Connection)connectionFactory.createConnection();
//
connection.start();
//Session:
// session
Session session = (Session) connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
// ,
Destination destination = session.createQueue(QUEUE_NAME);
//MessageProducer: ( )
//
MessageProducer producer =session.createProducer(destination);
//
//DeliveryMode.NON_PERSISTENT:
//DeliveryMode.PERSISTENT:
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
String msg = "";
int i = 0;
do {
msg = " "+i + " :"+new Random();
TextMessagemessage = session.createTextMessage(msg);
Thread.sleep(1000);
//
producer.send(message);
System.out.println(" :" +msg);
i++;
} while (i<1000);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
SendMessage sndMsg = newSendMessage();
try {
sndMsg.sendMessage();
} catch (Exception ex) {
System.out.println(ex.toString());
}
}
}
실행 결 과 는 다음 과 같 습 니 다.
여섯, 소식 을 받다
package cn.g2room.mq.test;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
/**
*
*
* @createTime:Apr 7, 2013 5:11:11 PM
* @author:나비
* @version:0.1
*@lastVersion: 0.1
* @updateTime:
*@updateAuthor: 나비
* @changesSum:
*
*/
public class ReceiveMessage {
privatestatic final String url = "tcp://localhost:61616";
privatestatic final String QUEUE_NAME = "G2Queue";
publicvoid receiveMessage() {
Connectionconnection = null;
try{
try{
ConnectionFactoryconnectionFactory = new ActiveMQConnectionFactory(
url);
connection= connectionFactory.createConnection();
}catch (Exception e) {
System.out.println(e.toString());
}
connection.start();
Sessionsession = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
Destinationdestination = session.createQueue(QUEUE_NAME);
// ,
MessageConsumerconsumer = session.createConsumer(destination);
consumeMessagesAndClose(connection,session, consumer);
}catch (Exception e) {
System.out.println(e.toString());
}
}
/**
* , close ,
*
* @param connection JMS JMSProvider
* @param session
* @param consumer
* @throws JMSException
* @auther
* Apr 8, 2013 10:31:55 AM
*/
protectedvoid consumeMessagesAndClose(Connection connection,
Sessionsession, MessageConsumer consumer) throws JMSException {
do{
Messagemessage = consumer.receive(1000);
if("close".equals(message)){
consumer.close();
session.close();
connection.close();
}
if(message != null) {
onMessage(message);
}
}while (true);
}
publicvoid onMessage(Message message) {
try{
if(message instanceof TextMessage) {
TextMessagetxtMsg = (TextMessage) message;
Stringmsg = txtMsg.getText();
System.out.println("Received:" + msg);
}
}catch (Exception e) {
e.printStackTrace();
}
}
publicstatic void main(String args[]) {
ReceiveMessagerm = new ReceiveMessage();
rm.receiveMessage();
}
}
실행 결 과 는 다음 과 같 습 니 다.