Centos7-mqtt消息中间件mosquitto的安装和配置

安装:(参考官网 http://mosquitto.org/download/)

服务器操作系统为CentOS7.0,使用最简单的yum安装

1.先加入yum源:

在/etc/yum.repos.d/目录中新建一个mosquitto.repo文件,里面写入:

[home_oojah_mqtt]
name=mqtt (CentOS_CentOS-7)
type=rpm-md
baseurl=http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-7/
gpgcheck=1
gpgkey=http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-7//repodata/repomd.xml.key
enabled=1

熟悉命令的可以直接下载到服务器中重命名http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-7/home:oojah:mqtt.repo

2.开始安装

yum search all mosquitto
yum install mosquitto mosquitto-clients

3.配置

安装完成之后,所有配置文件会被放置于/etc/mosquitto/目录下,

image

其中最重要的就是Mosquitto的配置文件,即mosquitto.conf

# Place your local configuration in /etc/mosquitto/conf.d/   
pid_file /var/run/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
#log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d

4.启动服务,两种方式

mosquitto -c /etc/mosquitto/mosquitto.conf -d
sudo /etc/init.d/mosquitto start

演示部分:

前面已经开启了服务,如果没有请参考前面步骤。在本例中,发布者、代理和订阅者均为localhsot,但是在实际的情况下三种并不是同一个设备,在mosquitto中可通过-h(--host)设置主机名称(hostname)。为了实现这个简单的测试案例,需要在linux中打开三个控制台,分别代表代理服务器、发布者和订阅者。

image

一、开启另一个终端窗口,运行订阅程序mosquitto_sub:

注意:

消息推送的发布和订阅要有主题,选项[-t] 主题,即:mosquitto -t 主题

如需指定用户名称则加选项[-i] 用户名,即:mosquitto_sub -t 主题 -i 订阅端

<pre class="prettyprint linenums prettyprinted">

  1. mosquitto_sub -t mqtt

</pre>

二、开启另一个终端窗口,运行发布程序mosquitto_pub:

指定消息推送的主题,发布端用户名和消息:

mosquitto_pub -t 主题 -i 发布端 -h 主机 -m 你好

*注意:如果消息中间有空格则消息要用引号括起来。

mosquitto_pub -h localhost -t mqtt -m "hello world."

这时候前面那个订阅窗口就可以收到”hello world”的消息了。


安装php扩展
// 安装mosquitto
yum install mosquitto libmosquitto-devel mosquitto-clients
//安装扩展
yum install php-pear php-devel。 // yum install php56w-pear php56w-devel
//配置php.ini
extension=mosquitto.so;//加入php.ini
此时phpinfo中已经可以查到mosquitto的值


图片.png

实现发布的Demo

class MqttMessage{
    public function Message(){
        $client = new Mosquitto\Client();
        $client->onConnect(function($code, $message) use ($client) {
            var_dump($code);
            var_dump($message);
            $client->subscribe('testing', 0);//订阅topic为testing的消息
        });
        $client->onMessage(function($message) use($client){
            echo $message->topic, "\n", $message->payload, "\n\n";
            $client->publish('testing2','testing2',0);//想topic为testing2,发布消息“testing2”
        });

        $client->connect('127.0.0.1', 1883);
        $client->loopForever();

    }
}
$mqtt =new MqttMessage();

$mqtt->Message();

运行PHP脚本
php MqttMessage.php


图片.png

发布消息

mosquitto_pub -t testing -m testing-messgae

php脚本接受到消息并且打印出来


图片.png

PHP脚本中,在收到消息后,会发布一个消息到topic为testing2中,后台会接收消息


图片.png

参考:# PHP 使用mosquiito

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容