山西省實現市市通動車:1150 公里高鐵線,每天 200 多趟列車
阿新 • • 發佈:2021-06-27
- 大綱
- 啟動雙擊:E:\新建資料夾\apache-activemq-5.16.1-bin\apache-activemq-5.16.1\bin\win64\activemq.bat
- 訪問:http://127.0.0.1:8161/admin/
- 使用者名稱和密碼都是:admin
- ActiveMQ是什麼
- Apache推出的,開源的,完全支援 JMS1.1 和 J2EE1.4 規範的JMS Provider實現的訊息中介軟體。
- 能幹什麼
- 主要功能:實現 JMS Provider,用來幫助實現高可用、高效能、可伸縮、易用和安全的企業級面向訊息服務的系統。
- 直白來說:一個訊息 中介軟體
- 非同步呼叫
- 特點
- 很容易整合Tomcat Spring
- 支援多種語言
- 支援多種協議
- 可插拔的體系結構,可以靈活定製、如 訊息儲存方式、安全管理等
- 設計上保證了高效能
- 訊息中介軟體
- MOM基本功能:將資訊以訊息的形式,從一個應用程式傳送到另一個或多個應用程式。
- 主要特點
- 訊息非同步接受,類似手機簡訊的欣慰,訊息傳送者不需要等待訊息接收者的響應。
- 訊息可靠接收,確保訊息在中介軟體可靠儲存,只有接收方收到訊息後才刪除訊息。
- 應用場景
- 在多個系統間進行整合和通訊的時候,通常會要求:
- 可靠傳輸:資料不能丟失,有的時候,也會要求不能重複傳輸。
- 非同步傳輸:否則各個系統同步傳送接受資料,互相等待,造成系統瓶頸。
- 在多個系統間進行整合和通訊的時候,通常會要求:
- 基本使用
- 控制檯展示
- 控制檯展示
- MQ存數取數
- 放入至MQ中
- Map<String, Object> stringObjectMap = activeMQUtil.mQUtil(bms);
- 返回: success
- 在MQ中取出
- 收到訊息:message--Bms{chargingStationId='CAGDBF016108', chargingPileId='0107011106032414', timeStamp='2021-03-19 16:30:04', SOC=60, leftTime='2021-03-16 10:10:10', Voltage=234.0, Current=112.0, voltageMin=2.0, voltageMax=4.0, degreeMin=25.0, degreeMax=38.0, carNo='蒙A50219', equipmentStatusTime='2021-03-16 10:10:10'}
- 收到訊息:message--Bms{chargingStationId='CAGDBF016108', chargingPileId='0107011106032414', timeStamp='2021-03-19 16:30:04', SOC=60, leftTime='2021-03-16 10:10:10', Voltage=234.0, Current=112.0, voltageMin=2.0, voltageMax=4.0, degreeMin=25.0, degreeMax=38.0, carNo='蒙A50219', equipmentStatusTime='2021-03-16 10:10:10'}
- 放入至MQ中
- 專案中新增使用的工具類
package com.example.demo.util;
import com.example.demo.pojo.Bms;
import com.example.demo.pojo.Staff;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.stereotype.Repository;
import javax.jms.*;
import java.util.HashMap;
import java.util.Map;
/**
* @ClassName activeMQUtil
* @Description ActiveMQ
* @Author CodeSheep
* @Date 2020/10/27 15:46
* @Version V1.0
* @Package com.example.demo.util
* 消費者連線 {@link consumer}
* 生產者連線 {@link producer}
*/
@Repository
public class ActiveMQUtil {
public Map<String, Object> mQUtil(Bms bms) throws Exception {
Map<String, Object> map = new HashMap<>();
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("my-queue");
MessageProducer producer = session.createProducer(destination);
for (int i = 0; i < 1; i++) {
TextMessage message = session.createTextMessage("message--" + bms);
Thread.sleep(1000);
//通過訊息生產者發出訊息
producer.send(message);
}
session.commit();
session.close();
connection.close();
map.put("ActiveMQ", "success");
return map;
}
}
- 生產者測試
package com.example.demo.util;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
/**
* @ClassName producer
* @Description ActiveMQ
* @Author CodeSheep
* @Date 2020/10/27 15:16
* @Version V1.0
* @Package com.example.demo.util
*/
public class producer {
public static void main(String[] args) throws Exception {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("my-queue");
MessageProducer producer = session.createProducer(destination);
for (int i = 0; i < 1; i++) {
TextMessage message = session.createTextMessage("於老闆--" + i);
Thread.sleep(1000);
//通過訊息生產者發出訊息
producer.send(message);
}
session.commit();
session.close();
connection.close();
}
}
- 消費者測試
package com.example.demo.util;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
/**
* @ClassName consumer
* @Description consumer
* @Author CodeSheep
* @Date 2020/10/27 15:37
* @Version V1.0
* @Package com.example.demo.util
*/
public class consumer {
public static void main(String[] args) throws JMSException {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
final Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("my-queue");
MessageConsumer consumer = session.createConsumer(destination);
Integer i = 0;
while (i < 1) {
i++;
TextMessage message = (TextMessage) consumer.receive();
session.commit();
System.out.println("收到訊息:" + message.getText());
}
session.close();
connection.close();
}
}