1. 程式人生 > >mqtt安裝使用教程。(基於rabbitmq外掛,docker部署,k8s部署,python教程)

mqtt安裝使用教程。(基於rabbitmq外掛,docker部署,k8s部署,python教程)

全棧工程師開發手冊 (作者:欒鵬)

Docker安裝RabbitMQ配置MQTT

使用RabbitMQ作為MQTT服務端,Eclipse Paho作為客戶端。宿主機系統為ubuntu16.04

Docker下載映象

docker pull daocloud.io/library/rabbitmq:3.7.4

啟動RabbitMQ

docker run -d --hostname my-rabbit --name some-rabbit -p 15672:15672 -p 5672:5672 -p 1883:1883 -p 15675:15675 daocloud.io/library/rabbitmq:3.7.4

注意對映容器埠

15672 是rabbitmq management管理介面預設訪問埠
5672 是amqp預設埠
1883 是mqtt tcp協議預設埠
15675 是web_mqtt websocket協議預設埠

啟用外掛

預設安裝後我們需要手動開啟rabbitmq_management外掛,rabbitmq_mqtt外掛和rabbitmq_web_mqtt外掛。

執行如下三條命令

docker exec <容器ID> rabbitmq-plugins enable rabbitmq_management
docker exec <容器ID> rabbitmq-plugins enable rabbitmq_mqtt
docker exec <容器ID> rabbitmq-plugins enable rabbitmq_web_mqtt
/usr/sbin/rabbitmq-plugins enable rabbitmq_management

/usr/sbin/rabbitmq-plugins enable rabbitmq_mqtt

/usr/sbin/rabbitmq-plugins enable rabbitmq_web_mqtt

進入容器執行這個指令碼。

sh start.sh

開放宿主機埠

firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --zone=public --add-port=1883/tcp --permanent
firewall-cmd --zone=public --add-port=15675/tcp --permanent
firewall-cmd --reload

Python MQTT客戶端實現

安裝python包

pip install paho-mqtt

消費者demo


import sys
import os
dir_common = os.path.split(os.path.realpath(__file__))[0] + '/../'
sys.path.append(dir_common)   # 將根目錄新增到系統目錄,才能正常引用common資料夾

import paho.mqtt.client as mqtt
import time

HOST = "192.168.2.46"
PORT = 1883

def client_loop():
    client_id = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
    client = mqtt.Client(client_id)    # ClientId不能重複,所以使用當前時間
    client.username_pw_set("guest", "guest")  # 必須設定,否則會返回「Connected with result code 4」
    client.on_connect = on_connect
    client.on_message = on_message
    client.connect(HOST, PORT, 60)
    client.loop_forever()

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe("test")

def on_message(client, userdata, msg):
    print(msg.topic+" "+msg.payload.decode("utf-8"))

if __name__ == '__main__':
    client_loop()

生產者demo

# import paho.mqtt.client as mqtt
import paho.mqtt.publish as publish
import time

HOST = "192.168.2.46"
PORT = 1883

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe("test")

def on_message(client, userdata, msg):
    print(msg.topic+" "+msg.payload.decode("utf-8"))

if __name__ == '__main__':
    client_id = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
    # client = mqtt.Client(client_id)    # ClientId不能重複,所以使用當前時間
    # client.username_pw_set("guest", "guest")  # 必須設定,否則會返回「Connected with result code 4」
    # client.on_connect = on_connect
    # client.on_message = on_message
    # client.connect(HOST, PORT, 60)
    # client.publish("test", "你好 MQTT", qos=0, retain=False)  # 釋出訊息

    publish.single("test", "你好 MQTT", qos = 1,hostname=HOST,port=PORT, client_id=client_id,auth = {'username':"guest", 'password':"guest"})

k8s部署rabbit,啟動manager,mqtt,websocket

相關推薦

mqtt安裝使用教程基於rabbitmq外掛docker部署k8s部署python教程

全棧工程師開發手冊 (作者:欒鵬) Docker安裝RabbitMQ配置MQTT 使用RabbitMQ作為MQTT服務端,Eclipse Paho作為客戶端。宿主機系統為ubuntu16.04 Docker下載映象 docker pull daocloud

centos6.9編譯安裝php5.6基於php-fpm模式

php-pfm xcache寫在前面centos6默認安裝的httpd2.2是不支持fcgi模式的,那麽如何在6上實現fpm模式呢,這裏需要編譯安裝httpd2.4(具體步驟參見之前的博文)。前提: 編譯安裝httpd2.4二進制安裝mariadb5.5yum 安裝相關包組bzip2-devel,libxml

前端之路:網頁內容轉圖片並且複製網頁內容並且優化體驗截圖外掛Clipboard.js 的使用

做專案遇到一個比較奇葩的需求,覺得很有意思,記錄下。方便以後回憶。 涉及框架(html2canvas.min.js   clipboard.mn.js): 直接連cdn <script src="https://cdn.bootcss.com/jquery/3.3

Redis安裝及配置基於5.0版本

目前最新版為:5.0.3,官方推薦使用原始碼方式進行安裝,以下是安裝步驟: 1、下載 wget http://download.redis.io/releases/redis-5.0.3.tar.gz 2、解壓 tar -xzvf redis-5.0.3.tar.gz -C

LINUX之samba伺服器的安裝與配置基於redhat 6.3發行版

linux系統之間或者linux系統和windows系統之間難免會有共享檔案的時候,實現共享的方法有很多,這裡簡單介紹一下通過samba伺服器實現linux系統與windows系統之間的檔案共享的方法。 我是windows下通過虛擬機器安裝的linux系統,redhat 6.3發行版。實現sa

一種替代DOORS在WORD中進行需求管理的方法基於WORD外掛的應用

外掛應用背景 通常軟體開發流程(CMMI,ASPICE,ISO26262)中,要求對需求進行管理。每條需求都應該有唯一的ID,一般市面上有很多軟體可以實現該功能如:DOORS,但費用不低(十幾萬哦)。對於嵌入式系統的需求開發來說,許多環節是在不同工具進行開發的,如系統設計可

Rabbitmq C++客戶端基於rabbitmq-c

    最近專案使用了rabbitmq訊息佇列,需要基於rabbitmq-c(https://github.com/alanxz/rabbitmq-c)進行一層封裝,然後根據官方自帶示例以及網上程式碼整理了一下。    傳送者需要宣告exchange,並指定routekey進

Windows2008R2下安裝gitosis伺服器基於cygwin

公司最近買了新的伺服器,由於git的大趨勢,公司決定將原來的tfs程式碼管理改為git,而且tfs只限於studio,其他的開發環境基本不適用,所以就最近研究了下git和git的許可權管理。 看了《Git 權威指南》這本書,上面說了Git下許可權管理有兩個比較好的軟體Gi

Unity使用WebSocket基於BaseHTTP外掛

伺服器:使用c#寫的,用來持續給一個埠發資料 using System; using System.Text; using System.Net; using System.Net.Sockets; using System.Text.RegularExpressions

個性化推薦系統原理介紹基於內容過濾/協同過濾/關聯規則/序列模式

信息 來講 行為記錄 鏈接 方程 機器學習 沒有 比較 graph 個性化推薦根據用戶興趣和行為特點,向用戶推薦所需的信息或商品,幫助用戶在海量信息中快速發現真正所需的商品,提高用戶黏性,促進信息點擊和商品銷售。推薦系統是基於海量數據挖掘分析的商業智能平臺,推薦主要基

java的設計模式的一些鏈接站在巨人的肩膀上才能看的更遠均來源與網上的各個大牛的博客中

原型 責任 arc .cn java life tar 創建 解釋 創建型抽象工廠模式 http://www.cnblogs.com/java-my-life/archive/2012/03/28/2418836.html工廠方法 http://www.cnblogs.

[轉]ionic3項目實戰教程創建provider、http請求、圖文列表、滑動列表

獲取 The cto avatar 設置 ddd ctp itl promise 本文轉自:https://blog.csdn.net/lyt_angularjs/article/details/81145468 版權聲明:本文為博主原創文章,轉載請註明出處。謝謝! ht

jquery點擊一組按鈕中的一個跳轉至對應頁面處理策略如點擊訂單列表中的一個訂單跳轉至該訂單的詳情

跳轉 () 列表 操作 進行 斷點 cat 訂單 一個 將改組按鈕的數據設置一個相同的屬性(如class),然後每個按鈕設置不同的id 當用戶點擊屬性為class的按鈕,根據id屬性來判斷點擊的是哪個按鈕,然後進行相關操作。 代碼示例: <script> $("

安裝react腳手架'create-react-app' 不是內部或外部命令?

1. npm install create-react-app -g 2. create-react-app myReact 有人可能會碰到‘create-react-app’ 不是內部或外部命令… 此時用 npx create-react-app myReact 來替代第二步

spring系統學習-之最小化spirngMVC練習環境準備基於IDEA的spring容器與外接tomcat容器的和平共處

    這個學期,我們系統的學了基於spring的內容。 前面已經從邏輯上分別記錄了ioc與aop的spring的兩大核心功能:spring的IOC容器練習以及IOC的優勢對比練習;  AOP的優勢極其逐步推進練習。    之後整理了spr

python3繪圖示例2基於matplotlib:柱狀圖、分佈圖、三角圖等

#!/usr/bin/env python# -*- coding:utf-8 -*-from matplotlib import pyplot as pltimport numpy as npimport pylabimport os,sys,time,math,random# 圖1-給已有的圖加上刻度fi

CSU 1240: 低調低調異或找出2個只出現1次的數

DescriptionStaginner總是喜歡把自已的名字寫在他出的題目裡。CSU-ACM協會的會長想,這孩子是不是想出名想瘋了,於是決定考一考他。任意正整數N,不大於N且與N互質的正整數個數記為P,

從鍵盤輸入某個十進位制小數或整數轉換成對應的二進位制小數並輸出 查詢十進位制小數轉換成二進位制小數的演算法使用迴圈來實現 最多保留小數位後7位數字即可演算法

/*演算法:把小數分成兩截,一截是整數,一截是小數。讓整數除以2取餘,倒敘輸出來 打印出二進位制(第一個數為個位,第二個數為10位,即乘以10,第三位數為百位, 即乘以100。。以此類推,即迴圈乘以10),直到除數 為0為止。小數乘以2,取整然後列印2進位制,直到小數部分

四種推薦系統原理介紹基於內容過濾/協同過濾/關聯規則/序列模式

      在推薦系統中常用的技術可大致分為四類:基於內容的過濾、協同過濾、基於規則的方法和混合方法。 一、基於內容過濾         基於內容過濾推薦系統思路如下:       (1)通過在抓取每個商品的一系列特徵來構建商品檔案;       (2)通過使用者購買的商品特徵來構建基於內容的使用者檔案

分享個最新Python入門到專案實戰視訊教程這不是 一套普通的Python教程

最新完整版Python入門到實戰+筆記+原始碼+作業視訊教程在Python技術扣扣裙【278136312】 裙公告裡面 ,需要的自己去下載看。 很多新入門學Python的小夥伴都面臨著很多問題,自學Python要學多久?如何學習,學多久可以找到Python高薪工作?等等一系列的問題,今天我就給大家分享下具