我在使用 mqtt 和 amqp 通信时遇到问题
重点是:
我有一个带有 MQTT 插件的 RabbitMQ 实例,我也有一个 mqtt 生产者/消费者和一个 AMQP 生产者/消费者(在 symfony RabbitMqBundle 上使用 php-amqplib)
RabbitMQ 文档说所有 MQTT 主题都适用于 amq.topic 交换。
正确的
我的情况:
MQTT 消费者/生产者订阅了 /topic/test 主题 AMQP 消费者在 amq.topic 交换上,在路由键 .topic.test 上(我不知道这一点,但兔子替换 / for . on mqtt 主题)
AMQP 消费 MQTT 消息:OK AMQP 产生消息到 MQTT:NOT MQTT 到 MQTT:OK AMQP 到 AMQP:OK
我的 mqtt pub/sub 是一个 JS 客户端(经过一些测试)我的 AMQP pub/sub 与 php/symfony
OBS:
如果我去 RabbitMQ,在 amq.topic 交换,.topic.test 队列中发送消息,mqtt 客户端接收正确
问题出在php客户端
old_sound_rabbit_mq:
connections:
default:
host: '%queue_host%'
port: '%queue_port%'
user: '%queue_user%'
password: '%queue_password%'
vhost: '/'
lazy: false
connection_timeout: 30
read_write_timeout: 30
keepalive: false
heartbeat: 0
#use_socket: true
producers:
search_driver:
connection: default
exchange_options: {name: 'amq.topic', type: topic}
queue_options: {routing_keys: ['.topic.test']}
consumers:
search_driver:
connection: default
exchange_options: {name: 'amq.topic', type: topic}
queue_options: {routing_keys: ['.topic.test']}
callback: my.consumer.service
似乎这在其他语言和库中不会发生:http: //blog.airasoul.io/the-internet-of-things-with-rabbitmq-node-js-mqtt-and-amqp/