ActiveMQ測試小程式
阿新 • • 發佈:2018-12-09
首先需要下載ActiveMQ,並修改記憶體
修改bin目錄下activemq.bat 在最後一行加入
set ACTIVEMQ_OPTS=-Xms1G -Xmx1G
儲存後執行該bat檔案 新建maven專案 pom檔案中加入依賴
<dependencies>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<!--我的mq版本為5.9.0-->
<version>5.9.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.activemq/activemq-broker -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-broker</artifactId >
<version>5.10.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.activemq/activemq-client -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId >
<version>5.14.0</version>
</dependency>
</dependencies>
傳送端程式
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class Send {
// private static final int SEND_NUMBER = 10;
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注意引數值test是一個伺服器的queue,須在ActiveMQ的console配置
destination = session.createQueue("test");
//得到傳送者
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 <= 100000; i++){
TextMessage message = session.createTextMessage("今日天氣asda" + i);
//傳送訊息到目的地
System.out.println("傳送:"+message.getText());
producer.send(message);
}
}
}
接收端程式
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class revice {
public static void main(String[] args) {
ConnectionFactory connectionFactory;
Connection connection = null;
Session session;
Destination destination;
//接收者-消費者
MessageConsumer messageConsumer;
connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnectionFactory.DEFAULT_USER,
ActiveMQConnectionFactory.DEFAULT_PASSWORD,
"tcp://localhost:61616");
try{
connection = connectionFactory.createConnection();
connection.start();
session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("test");
messageConsumer = session.createConsumer(destination);
while(true){
TextMessage message = (TextMessage) messageConsumer.receive(1000);
if(null != message){
System.out.println("收到:"+message.getText());
}else{
break;
}
message.acknowledge();
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
try{
if(null != connection){
connection.close();
}
}catch(Throwable ig){
}
}
}
}