亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ActiveMQApollo之MQTT

2019-11-14 15:39:57
字體:
來源:轉載
供稿:網友

Apollo是apache旗下的基金項目,它是以Apache ActiveMQ5.x為基礎,采用全新的線程和消息調度架構重新實現的消息中間件,針對多核處理器進行了優化處理,它的速度更快、更可靠、更易于維護。apollo與ActiveQQ一樣支持多協議:STOMP、AMQP、MQTT、Openwire、 SSL、WebSockets,本文只介紹MQTT協議的使用。 
關于ActiveMQ5請參考:http://activemq.apache.org,本文只介紹Apollo在windows下安裝和應用,Apollo的詳細文檔請參考官網:http://activemq.apache.org/apollo/documentation/user-manual.html.

 

Apollo的下載和安裝

 

1.下載并安裝

進入http://activemq.apache.org/apollo/download.html,下載windows版本的壓縮包,并解壓到自己工作目錄(如:E:/apache-apollo-1.7),并創建環境變量APOLLO_HOME=E:/apache-apollo-1.7。如果操作是系統是Windows Vista或更高版本,則需要安裝Microsoft Visual C++ 2010 Redistributable (64位JVM:http://www.microsoft.com/en-us/download/details.aspx?id=14632;32位JVM:http://www.microsoft.com/en-us/download/details.aspx?id=5555)。

 

2.創建broker實例并啟動服務

進入E:/apache-apollo-1.7之下的bin目錄,打開cmd窗口,執行命令:apollo create E:/apollo_broker,命令執行成功后,在E盤下會有apollo_broker目錄,在其下有個bin目錄,其中有兩個文件:apollo-broker.cmd和apollo-broker-service.exe,第一個是通過cmd命令啟動apollo服務的,第二個是創建window服務的。 
cmd命令啟動:apollo-broker run,啟動成功可以在瀏覽器中查看運行情況(http://127.0.0.1:61680/,默認用戶名/密碼:admin/passWord); 
windows服務啟動:執行apollo-broker-service.exe,創建windows服務,就可以以windows服務的方式啟動apollo服務。

 

3.MQTT協議的應用

MQTT協議有眾多客戶端實現,相關請參考:http://activemq.apache.org/apollo/versions/1.7/website/documentation/mqtt-manual.html。 
本文采用eclipse的paho客戶端實現(https://eclipse.org/paho/)。

a.javascript客戶端:https://eclipse.org/paho/clients/js/

Javascript客戶端項目下載下來,并在其項目根目錄下執行mvn命令,進行編譯,生成target目錄,其下生成mqttws31.js、mqttws31-min.js兩個js文件,將其拷貝到自己項目相關目錄下,并在頁面中引用,即可實現javascript客戶端的消息訂閱和發布,demo代碼如下: 
var client = new Paho.MQTT.Client(location.hostname, 61623,"/", "clientId"); 
// 61623是ws連接的默認端口,可以在apollo中間件中進行配置(關于apollo的配置請參考:http://activemq.apache.org/apollo/documentation/user-manual.html) 
// set callback handlers 
client.onConnectionLost = onConnectionLost; 
client.onMessageArrived = onMessageArrived; 
// connect the client 
client.connect({userName:'admin',password:'password',onSuccess:onConnect}); 
// called when the client connects 
function onConnect() { // 連接成功后的處理 
// Once a connection has been made, make a subscription and send a message. 
console.log("onConnect"); 
client.subscribe("/topic/event"); // 訂閱消息的主題 
var message = new Paho.MQTT.Message("Hello,this is a test"); 
message.destinationName = "/topic/event"; 
client.send(message); // 發送消息 

// called when the client loses its connection 
function onConnectionLost(responSEObject) { // 連接丟失后的處理 
if (responseObject.errorCode !== 0) { 
console.log("onConnectionLost:"+responseObject.errorMessage); 


// called when a message arrives 
function onMessageArrived(message) { // 消息接收成功后的處理 
console.log("onMessageArrived:"+message.payloadString); 
}

b. java客戶端實現

paho目前只支持J2SE和安卓,下載地址:https://eclipse.org/paho/clients/java/,我們采用maven方式。 
maven庫地址: 
https://repo.eclipse.org/content/repositories/paho-releases/ - Official Releases 
https://repo.eclipse.org/content/repositories/paho-snapshots/ - Nightly Snapshots 
maven dependency: 
<dependency> 
<groupId>org.eclipse.paho</groupId> 
<artifactId>org.eclipse.paho.client.mqttv3</artifactId> 
<version>1.0.1</version> 
</dependency>
 
說明:版本為1.0.0或0.9.0時,其jar包根本加載不進來,最后搜到1.0.1版本才可以正常使用。 
java端實現: 
public interface IMessage { 
String getHost(); 
Integer getPort(); 
Integer getQos(); 
String getTopic(); 
String getClientId(); 
String getContent(); 
byte[] getContentBytes(); 

 


Map<String,Object> getOption(); 
Object getSender(); 
Date getSendTime(); 
}
 
public final class MessagePRocessingCenter { 
protected static Logger logger=LoggerFactory.getLogger(MessageProcessingCenter.class); 
protected static final String BROKER_PREFIX="tcp://"; 
protected static final String BROKER_HOST="localhost"; 
protected static final int PORT=61613; 
protected static final int QOS=2; 
protected static final String TOPIC="/topic/event"; 
protected static final String CLIENT_ID="clientId"; 
protected static final String MQ_USER="admin"; 
protected static final String MQ_PASSWORD="password"; 
public static void send(IMessage message){ 
String topic= StringUtils.isEmpty(message.getTopic())?TOPIC: message.getTopic(); 
int qos=null == message.getQos()?QOS: message.getQos(); 
String broker=BROKER_PREFIX+ (StringUtils.isEmpty(message.getHost())?BROKER_HOST:message.getHost()); 
int port=null == message.getPort()?PORT:message.getPort(); 
broker+=":"+port; 
String clientId = StringUtils.isEmpty(message.getClientId())?CLIENT_ID:message.getClientId(); 
Map<String,Object> opts=message.getOption(); 
String user=MQ_USER; 
String password=MQ_PASSWORD; 
if(null != opts){ 
if(null != opts.get("userName")){ 
user=opts.get("userName").toString(); 

if(null != opts.get("password")){ 
password=opts.get("password").toString(); 


MemoryPersistence persistence = new MemoryPersistence(); 
try { 
MqttClient sampleClient = new MqttClient(broker, clientId, persistence); 
MqttConnectOptions connOpts = new MqttConnectOptions(); 
connOpts.setUserName(user); 
connOpts.setPassword(password.toCharArray()); 
connOpts.setCleansession(true); 
sampleClient.connect(connOpts); 
MqttMessage mqm = new MqttMessage(message.getContentBytes()); 
mqm.setQos(qos); 
sampleClient.publish(topic, mqm); 
sampleClient.disconnect(); 
} catch(MqttException me) { 
logger.info("********************* send message exception :"); 
logger.info("********************* reason : " + me.getReasonCode()); 
logger.info("********************* msg : " + me.getMessage()); 
logger.info("********************* loc : " + me.getLocalizedMessage()); 
logger.info("********************* cause : " + me.getCause()); 
logger.info("********************* excep : " + me); 
me.printStackTrace(); 


public static void send(Set<IMessage> set){ 
for(IMessage message:set){ 
send(message); 


}

 

小結

至此,MQTT協議已部署完畢,java端可以發布消息,而javascript端則可以訂閱并接收到java端發布的信息。 
本文只是依照官網手冊而實現的簡單應用,講解不一定十分準確,有什么不對的地方還請多多指點,更詳細的應用請參考官網文檔: 
apollo:http://activemq.apache.org/apollo/documentation/user-manual.html 
eclipse paho:https://eclipse.org/paho/

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线播放国产一区中文字幕剧情欧美| 亚洲人成网7777777国产| 国产精品免费网站| 国产成人久久久精品一区| 欧美性猛交xxxxx免费看| 国产精品www| 欧美日韩午夜视频在线观看| 最好看的2019年中文视频| 中文字幕成人在线| 亚洲黄在线观看| 欧美激情精品久久久久| 亚洲最大福利视频网站| 日韩激情在线视频| 激情av一区二区| 97在线视频免费看| 亚洲男人天堂手机在线| 亚洲人成网站999久久久综合| 久久久久久久久久久91| 国产日韩欧美日韩大片| 97在线观看视频| 亚洲free嫩bbb| 欧美风情在线观看| 久久人人爽亚洲精品天堂| 日韩中文综合网| 91九色国产视频| 国产成人精品视频在线| 亚洲精品乱码久久久久久按摩观| 国产日韩欧美综合| 国产精国产精品| 欧美日韩中文字幕日韩欧美| 欧美日韩精品在线观看| 欧美精品情趣视频| 亚洲免费一级电影| 日韩欧美亚洲一二三区| 中文字幕亚洲一区在线观看| 91亚洲精品久久久| 国产精品久久久久免费a∨| 日韩欧美黄色动漫| 国产精品亚洲第一区| 久久久久久国产精品美女| 色老头一区二区三区在线观看| 欧美成人精品在线| 亚洲毛片在线免费观看| 国产精品久久久久久中文字| 欧美wwwwww| 18一19gay欧美视频网站| 国产精品国产三级国产aⅴ9色| 国产精品视频1区| 狠狠操狠狠色综合网| 狠狠色狠狠色综合日日小说| 国产美女精品免费电影| 日韩精品在线第一页| 日韩电影免费观看在线观看| 久久国产精彩视频| 日韩久久免费电影| 国产精品久久久久久久午夜| 久久久国产精品免费| 欧美激情一级欧美精品| 亚洲人午夜色婷婷| 欧美激情图片区| 欧美成人在线免费视频| 伊人伊成久久人综合网小说| 亚洲天堂免费在线| 欧美一级片在线播放| 久久精品青青大伊人av| 97在线看免费观看视频在线观看| 色悠悠国产精品| 国产美女精彩久久| 欧美在线国产精品| 最近更新的2019中文字幕| 久久精品视频va| 久久久久久美女| 国产精品一区二区久久国产| 亚洲天堂成人在线视频| 欧美激情影音先锋| 91精品国产综合久久香蕉的用户体验| 亚洲性日韩精品一区二区| 中文字幕亚洲一区在线观看| 亚洲国产另类久久精品| 亚洲国产精品久久| 久久久国产精品免费| 中文字幕精品影院| 亚洲第一页中文字幕| 日韩av在线网| 一个人看的www久久| 成人久久久久久久| 日韩av快播网址| 色噜噜狠狠色综合网图区| 国产精品999| 欧美一级视频免费在线观看| 亚洲男人的天堂在线播放| 日韩中文字幕精品| 欧美精品激情在线| 日韩精品免费综合视频在线播放| 少妇高潮久久77777| 久久影视电视剧免费网站清宫辞电视| 成人亚洲综合色就1024| 国产美女扒开尿口久久久| 久久久久国产精品一区| 欧美成在线观看| 日韩a**站在线观看| 国色天香2019中文字幕在线观看| 国内精品小视频| 欧美成人午夜激情在线| 91久久在线视频| 久久精品免费播放| 日韩中文字幕精品视频| 欧美国产精品人人做人人爱| 国产在线观看精品一区二区三区| 午夜精品久久久久久久白皮肤| 久久久久久尹人网香蕉| 日韩hd视频在线观看| 久久久久久噜噜噜久久久精品| 91精品视频专区| 在线观看精品自拍私拍| 亚洲黄色av女优在线观看| 91牛牛免费视频| 动漫精品一区二区| 亚洲欧美精品一区| 国产成人免费av电影| 亚洲v日韩v综合v精品v| 亚洲91av视频| 欧美在线精品免播放器视频| 亚洲精品欧美日韩专区| 久久男人av资源网站| 欧美—级高清免费播放| 日韩视频欧美视频| 78m国产成人精品视频| 亚洲人成在线观看| 一本色道久久综合狠狠躁篇的优点| 久久久人成影片一区二区三区| 91久久国产综合久久91精品网站| 国产精品一区二区av影院萌芽| 欧美一区视频在线| 国产亚洲福利一区| 久久全国免费视频| 欧美专区在线视频| 日韩激情视频在线播放| 欧美一级成年大片在线观看| 久久精品国产一区| 亚洲免费视频在线观看| 亚洲美女www午夜| 成人av番号网| 国产在线久久久| 国产成人精品免高潮费视频| www.日韩.com| 欧美成人一区在线| 超碰97人人做人人爱少妇| 日韩精品在线观看网站| 亚洲国产精品va在线| 热99在线视频| 91人人爽人人爽人人精88v| 国产欧美日韩精品专区| 国产成人精品电影| 欧美午夜影院在线视频| 国产成人涩涩涩视频在线观看| 另类少妇人与禽zozz0性伦| 欧美性高跟鞋xxxxhd| 97在线视频精品| 亚洲精品美女久久久| 国产在线观看91精品一区| 国产亚洲精品综合一区91| 欧美精品久久久久久久久| 久久久久国色av免费观看性色|