javaメッセージ構造ActiveMQ入門例
1.ActiveMQをダウンロードする
公式サイトに行ってダウンロードします。
http://activemq.apache.org/
私はActiveMQ 5.8.0 Release版をダウンロードしました。
2.ActiveMQの運転
apache-activemq-5..0-bin.zipを展開し、apache-activemq-55.1\bin\activemq.batをダブルクリックしてActiveMQプログラムを実行します。
ActiveMQを起動したら、ログイン:http://localhost:8161/admin/をクリックして、Queを作成し、FirstQueと名づけます。
3.Eclipseプロジェクトを作成して実行する
java projectを作成します。ActiveMQ-5.8、libフォルダを新規作成します。
apache-activemq-5.8\libディレクトリを開く
コピー
activemq-brook er-5.8.0.jar
activemq-client-5.8.jar
geronimo-j 2 ee-manage ment_1.1_spec-1.0.1.jar
geronimo-jms_1.1_spec-1.1.11.jar
sf 4 j-appi-1.66.jar
この5つのjarファイルはlibフォルダにあり、Build Path->Add to Build Path
図のような構造です
Sender.java
先に実行します。Receiver.java
再実行:Sender.java
結果が見られます
Sender運転後:
メッセージ送信:ActiveMq送信のメッセージ1
メッセージ送信:ActiveMq送信のメッセージ2
メッセージ送信:ActiveMq送信のメッセージ3
メッセージ送信:ActiveMq送信のメッセージ4
メッセージ送信:ActiveMq送信のメッセージ5
Receiver運転後:
メッセージActiveMqから送信されたメッセージ1
メッセージActiveMqから送信されたメッセージ2
メッセージActiveMqから送信されたメッセージ3
メッセージActiveMqから送信されたメッセージ4
メッセージActiveMqから送信されたメッセージ5
違う出力内容を見たいなら、下の図のボタンをクリックしてsolieを切り替えます。
Receiver.javaでは、receive(500000)のような時間を設定できます。以下のコードで示します。
赤いブロックをクリックして、手動でプログラムを停止します。
黒い髪:http://heisetoufa.iteye.com/
公式サイトに行ってダウンロードします。
http://activemq.apache.org/
私はActiveMQ 5.8.0 Release版をダウンロードしました。
2.ActiveMQの運転
apache-activemq-5..0-bin.zipを展開し、apache-activemq-55.1\bin\activemq.batをダブルクリックしてActiveMQプログラムを実行します。
ActiveMQを起動したら、ログイン:http://localhost:8161/admin/をクリックして、Queを作成し、FirstQueと名づけます。
3.Eclipseプロジェクトを作成して実行する
java projectを作成します。ActiveMQ-5.8、libフォルダを新規作成します。
apache-activemq-5.8\libディレクトリを開く
コピー
activemq-brook er-5.8.0.jar
activemq-client-5.8.jar
geronimo-j 2 ee-manage ment_1.1_spec-1.0.1.jar
geronimo-jms_1.1_spec-1.1.11.jar
sf 4 j-appi-1.66.jar
この5つのjarファイルはlibフォルダにあり、Build Path->Add to Build Path
図のような構造です
Sender.java
package com.lm.activemq;
/**
* @Header: Sender.java
* :
* @author: lm
* @date 2013-7-17 10:52:42
* @Email
* @company
* @addr
*/
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);
}
}
}
Receiver.javapackage com.lm.activemq;
/**
* @Header: Receiver.java
* :
* @author: lm
* @date 2013-7-17 10:52:58
* @Email
* @company
* @addr
*/
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) {
}
}
}
}
5.テストプロセス先に実行します。Receiver.java
再実行:Sender.java
結果が見られます
Sender運転後:
メッセージ送信:ActiveMq送信のメッセージ1
メッセージ送信:ActiveMq送信のメッセージ2
メッセージ送信:ActiveMq送信のメッセージ3
メッセージ送信:ActiveMq送信のメッセージ4
メッセージ送信:ActiveMq送信のメッセージ5
Receiver運転後:
メッセージActiveMqから送信されたメッセージ1
メッセージActiveMqから送信されたメッセージ2
メッセージActiveMqから送信されたメッセージ3
メッセージActiveMqから送信されたメッセージ4
メッセージActiveMqから送信されたメッセージ5
違う出力内容を見たいなら、下の図のボタンをクリックしてsolieを切り替えます。
Receiver.javaでは、receive(500000)のような時間を設定できます。以下のコードで示します。
TextMessage message = (TextMessage) consumer.receive(500000);
この時にReceiver.javaを実行すると、このReceiver.javaは500秒を実行しています。eclipseで発見できます。赤いブロックをクリックして、手動でプログラムを停止します。
黒い髪:http://heisetoufa.iteye.com/