一、准备工作
1. 下载:官方网站下载ActiveMQ
2. 安装:直接解压运行bin目录下面的activemq.bat文件
3. 启动成功后登陆:http://localhost:8161/admin/
4. 创建一个Queue,命名为FirstQueue,到这里准备工作OK
二、开始实例
首先,创建一个普通的java项目,然后导入java包(本人导入的是activemq-all-5.9.0.jar)
其次,创建消息发送者
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
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 ConnectionFactory connectionFactory;
static {
connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
}
public static void send(Session session, MessageProducer producer)
throws JMSException {
for (int i = 0; i < 10; i++) {
// 创建消息
TextMessage msg = session.createTextMessage("消息" + i);
// 发送消息
producer.send(msg);
System.out.println("发送消息:消息" + i);
}
}
public static void main(String[] args) {
// 连接
Connection connection = null;
// 会话
Session session = null;
// 目的地,消息要发往的地方
Destination destination;
// 消息发送者
MessageProducer producer = null;
try {
// 获取消息连接
connection = connectionFactory.createConnection();
// 开启连接
connection.start();
// 通过连接创建会话
session = connection.createSession(Boolean.TRUE,
Session.AUTO_ACKNOWLEDGE);
// 创建消息队列
destination = session.createQueue("FirstQueue");
// 创建发送者
producer = session.createProducer(destination);
// 发送消息
send(session, producer);
} catch (JMSException e) {
e.printStackTrace();
} finally {
try {
session.commit();
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
最后,添加消息接受者
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Consumer {
private static ConnectionFactory connectionFactory;
static {
connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
}
public static void main(String[] args) {
Connection connection = null;
Session session = null;
Destination destination;
MessageConsumer consumer = null;
try {
connection = connectionFactory.createConnection();
connection.start();
session = connection.createSession(Boolean.FALSE,
Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("FirstQueue");
consumer = session.createConsumer(destination);
while (true) {
TextMessage msg = (TextMessage) consumer.receive(30000);
if (msg != null) {
System.out.println("接收到的消息:" + msg.getText());
} else {
break;
}
}
} catch (JMSException e) {
e.printStackTrace();
} finally {
try {
consumer.close();
session.commit();
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
运行结果
- sender
log4j:WARN No appenders could be found for logger (org.apache.activemq.transport.WireFormatNegotiator).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
发送消息:消息0
发送消息:消息1
发送消息:消息2
发送消息:消息3
发送消息:消息4
发送消息:消息5
发送消息:消息6
发送消息:消息7
发送消息:消息8
发送消息:消息9
- Consumer
log4j:WARN No appenders could be found for logger (org.apache.activemq.transport.WireFormatNegotiator).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
接收到的消息:消息0
接收到的消息:消息1
接收到的消息:消息2
接收到的消息:消息3
接收到的消息:消息4
接收到的消息:消息5
接收到的消息:消息6
接收到的消息:消息7
接收到的消息:消息8
接收到的消息:消息9
注意:接受消息还可以通过MessageListener接收
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.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class ConsumerListener {
private static ConnectionFactory connectionFactory;
static {
connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
}
public static void main(String[] args) {
Connection connection = null;
Session session = null;
Destination destination;
MessageConsumer consumer = null;
try {
connection = connectionFactory.createConnection();
connection.start();
session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("FirstQueue");
consumer = session.createConsumer(destination);
consumer.setMessageListener(new MessageListener() {
@Ovoutide
public void onMessage(Message message) {
TextMessage msg = (TextMessage) message;
try {
System.out.println(msg.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
} catch (JMSException e) {
e.printStackTrace();
}finally{
try {
consumer.close();
session.commit();
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}