最近不是很忙,想将之前使用的JMS回顾一下,这里贴出一个小例子,供初学者参考。
1.下载ActiveMQ
去官方网站下载:http://activemq.apache.org/
2.运行ActiveMQ
解压缩apache-activemq-5.1.1-bin.zip,然后双击apache-activemq-5.1.1\bin\activemq.bat运行ActiveMQ程序。
启动ActiveMQ以后可以开始创建项目了。
3.项目结构如下
QueueProducer代码
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
/**
* Created by Matt on 2018-02-24.
* queue点对点方式,消息队列生产者
*/
public class QueueProducer {
private static String user = ActiveMQConnection.DEFAULT_USER;
private static String password = ActiveMQConnection.DEFAULT_PASSWORD;
private static String url = "tcp://localhost:61616";
public static void main(String[] args) throws Exception
{
//新建连接工厂
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(user,password,url);
//生成连接
Connection connection = connectionFactory.createConnection();
//启动连接
connection.start();
//将连接启动信息打印出来
System.out.println("连接已启动。。。");
//创建一个接收和发送消息的会话
Session session = connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);
//新建一个消息队列,目的地
Queue destination = session.createQueue("SCL1");
//消息生产者
MessageProducer producer = session.createProducer(destination);
//设置不持久化
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
//发送消息
sendMessage(session,producer);
session.commit();
connection.close();
System.out.println("===========消息发送完毕===========");
}
public static void sendMessage(Session session, MessageProducer producer) throws Exception
{
for(int i = 0;i<100;i++)
{
TextMessage message = session.createTextMessage("ActiveMQ 发送文本消息:" + i);
//打印发送记录
System.out.println("ActiveMQ 发送文本消息:" + i);
producer.send(message);
}
}
}
QueueConsumer代码
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
/**
* Created by Matt on 2018-02-24.
* Queue点对点方式,队列消费者
*/
public class QueueConsumer {
private static String user = ActiveMQConnection.DEFAULT_USER;
private static String password = ActiveMQConnection.DEFAULT_PASSWORD;
private static String url = "tcp://localhost:61616";
public static void main(String[] args) throws Exception
{
//创建连接工厂,以后用来创建连接
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(user,password,url);
//创建连接
Connection connection = connectionFactory.createConnection();
connection.start();
//创建一个发送或者接收消息的会话
final Session session = connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);
//创建消息队列
Queue destination = session.createQueue("SCL1");
//消息队列的消费者
MessageConsumer consumer = session.createConsumer(destination);
//对相应的消息队列设置监听器
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();
}
try {
session.commit();
} catch (JMSException e) {
e.printStackTrace();
}
}
});
}
}
先启动生产者,在启动消费者就可看到生产者发送的消息被消费者接收到了