Skip to content

PhxQueue部署MQTT支持

Tao He edited this page Oct 15, 2018 · 4 revisions

支持MQTT的分支:https://github.com/Tencent/phxqueue/tree/mqtt

PhxQueue支持MQTT协议。通过MQTT协议接入PhxQueue时,使用者可以直接使用标准MQTT客户端,无需自己再添加Consumer处理代码,而且业务端不再局限于 C++语言,降低使用学习和接入成本。部署PhxQueue的MQTT必须部署Store、Lock、MQTT Consumer、MQTT Broker四个模块。所有模块需要使用mqtt分支代码进行部署。下面逐一说明:

启动Store

Store是一个分布式存储,用于存储队列的数据。

启动3个Store节点(加-d参数可以在后台运行):

bin/store_main -c etc/store_server.0.conf
bin/store_main -c etc/store_server.1.conf
bin/store_main -c etc/store_server.2.conf

启动Lock

Lock是一个分布式存储,用于存储MQTT协议相关数据。

启动3个Lock节点(加-d参数可以在后台运行):

bin/lock_main -c etc/lock_server.0.conf
bin/lock_main -c etc/lock_server.1.conf
bin/lock_main -c etc/lock_server.2.conf

启动MQTT Consumer

MQTT Consumer是队列的消费者,从Store拉数据。

启动3个Consumer节点:

bin/mqttconsumer_main -c etc/consumer_server.0.conf
bin/mqttconsumer_main -c etc/consumer_server.1.conf
bin/mqttconsumer_main -c etc/consumer_server.2.conf

可以查看MQTT Consumer的日志:

ps -ef | grep mqttconsumer_main
tail -f log/consumer.0/mqttconsumer_main.INFO
tail -f log/consumer.1/mqttconsumer_main.INFO
tail -f log/consumer.2/mqttconsumer_main.INFO

启动MQTT Broker

MQTT Broker负责接入MQTT Client。

启动MQTT Broker节点:

bin/mqttbroker_main -c etc/mqttbroker_server.0.conf

可以查看MQTT Broker的日志:

ps -ef | grep mqttbroker_main
tail -f log/mqttbroker.0/mqttbroker_main.INFO

启动MQTT客户端

使用MQTT客户端连接PhxQueue

注意事项

由于需要支持MQTT的QoS、顺序会话保持等特性,使用MQTT协议时有如下限制:

  1. mqtt的topic必须为(/ + phxqueue_topic + / + phxqueue_pub_id + /)。
  2. 一个pub只允许绑定一个queue。
  3. 一个queue只允许绑定一个pub。
  4. 关闭重试换队列开关。