第一次学习使用ActiveMQ,安装环境windows10
安装步骤:
1:下载apache-activemq-5.15.4-bin.zip
2:解压即可
安装完成后的目录结构:
启动在bin目录下,对应的有两个文件夹,32和64的根据自己电脑操作系统选择相应目录
楼主的是win64,进入目录双击activemq.bat即可启动
验证是否启动成功访问:http://localhost:8161/ 进入后台管理系统
登陆密码默认是:admin/admin
ActiveMQ启动默认开启了两个端口:8161和61616
8161端口:是后台管理端口 ,可在conf/jetty.xml中修改
61616端口:是java开发连接的端口,可在/conf/activemq.xml
代码测试:
maven依赖:
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>5.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>5.7.0</version>
</dependency>
生产者:
package com.test.mq.queue;
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 produceMq {
private static final String SUBJECT = "test-activemq-queue";
//连接账号
private static String userName = "admin";
//连接密码
private static String password = "admin";
//连接地址
private static String brokerURL = "tcp://localhost:61616";
public static void main(String[] args) throws JMSException {
//初始化连接工厂
ConnectionFactory connectionFactory = new
ActiveMQConnectionFactory(userName,password,brokerURL);
//获得连接
Connection conn = connectionFactory.createConnection();
//启动连接
conn.start();
//创建Session,此方法第一个参数表示会话是否在事务中执行,第二个参数设定会话的应答模式
Session session = conn.createSession(true, Session.AUTO_ACKNOWLEDGE);
//创建队列
Destination dest = session.createQueue(SUBJECT);
//createTopic方法用来创建Topic
//session.createTopic("TOPIC");
//通过session可以创建消息的生产者
MessageProducer producer = session.createProducer(dest);
// producer.setDeliveryMode(DeliveryMode.PERSISTENT);持久化
for (int i=0;i<100;i++) {
//初始化一个mq消息
TextMessage message = session.createTextMessage("hello active mq 中文" + i);
//发送消息
producer.send(message);//
}
session.commit();
session.close();
//关闭mq连接
conn.close();
}
}
消费者:
package com.test.mq.queue;
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.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ConsumerMq {
private static final Logger LOGGER = LoggerFactory.getLogger(ConsumerMq.class);
private static final String SUBJECT = "test-activemq-queue";
//连接账号
private static String userName = "admin";
//连接密码
private static String password = "admin";
//连接地址
private static String brokerURL = "tcp://localhost:61616";
public static void main(String[] args) throws JMSException {
//初始化ConnectionFactory
ConnectionFactory connectionFactory = new
ActiveMQConnectionFactory(userName,password,brokerURL);
//创建mq连接
Connection conn = connectionFactory.createConnection();
// conn.setClientID("");
//启动连接
conn.start();
//创建会话
Session session = conn.createSession(true, Session.AUTO_ACKNOWLEDGE);
//通过会话创建目标 参数名称要和生产者一致
Destination dest = session.createQueue(SUBJECT);
// session.createDurableSubscriber(topic, "随便写");持久化消息接收
//创建mq消息的消费者
MessageConsumer consumer = session.createConsumer(dest);
int i=0;
while(i<100){
TextMessage message = (TextMessage) consumer.receive();
// session.commit();
// message.acknowledge();
onMessage(message);
i++;
}
//初始化MessageListener
ConsumerMq me = new ConsumerMq();
//给消费者设定监听对象
// consumer.setMessageListener(me);
}
public static void onMessage(Message message) {
TextMessage txtMessage = (TextMessage)message;
try {
System.out.println("get message " + txtMessage.getText());
LOGGER.info ("get message " + txtMessage.getText());
} catch (JMSException e) {
LOGGER.error("error {}", e);
}
}
}
一只行走的小笨猿!