第一次學習使用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);
}
}
}
一隻行走的小笨猿!