从官方网站下载 Apollo 并安装在 Mac OS X 10.10.2 中后,如Apollo 1.7 MQTT 协议手册中所述,我在apache-apollo-1.7/bin/androidMQ/etc/apollo.xml中设置了 mqtt 的连接器:
<connector id="tcp" bind="tcp://0.0.0.0:61613" protocol="mqtt"/>
然后创建一个代理(androidMQ)并运行:
androidMQ/bin/apollo-broker 运行像这样的日志:
$ androidMQ/bin/apollo-broker 运行 _____ .__ .__ / _ \ ______ ____ | | | | ____ / /_\ \\____ \ / _ \| | | | /_\ / | \ |_> > ) |_| |_( ) \____|__ / __/ \____/|____/____/\____/ \/|__| 阿帕奇阿波罗 (1.7) 加载配置文件'/Users/jijin/services/apache-apollo-1.7/bin/androidMQ/etc/apollo.xml'。 信息 | 操作系统:Mac OS X 10.10.2 信息 | JVM:Java HotSpot(TM) 64 位服务器 VM 1.6.0_65 (Apple Inc.) 信息 | 阿波罗:1.7(在:/Users/jijin/services/apache-apollo-1.7) 信息 | 操作系统将打开文件限制限制为:6250 信息 | 起始存储:leveldb 存储在 /Users/jijin/services/apache-apollo-1.7/bin/androidMQ/data 信息 | 接受连接:tcp://0.0.0.0:61613 信息 | 管理界面位于:https://127.0.0.1:61681/ 信息 | 管理界面位于:http://127.0.0.1:61680/`
然后,我将它与 ruby gem 一起使用:ruby-mqtt 和我的脚本是:
subsctibe.rb
require 'rubygems'
require 'mqtt'
MQTT::Client.connect("localhost", 1883) do |client|
client.get("test") do |topic, message|
puts "#{topic}---content: #{message}\n"
end
end
发布.rb
require 'rubygems'
require 'mqtt'
MQTT::Client.connect("localhost", 1883) do |c|
c.publish("test", "gogogo!")
end
运行时报错:</p>
$ ruby lib/mqtt/apollo_subscribe.rb /Users/jijin/.rvm/gems/ruby-1.9.3-p547/gems/mqtt-0.3.1/lib/mqtt/client.rb:496:in `block in receive_connack': Connection denied: bad user name or密码(MQTT::ProtocolException) 来自 /Users/jijin/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/timeout.rb:69:in `timeout' 来自 /Users/jijin/.rvm/gems/ruby-1.9.3-p547/gems/mqtt-0.3.1/lib/mqtt/client.rb:486:in `receive_connack' 来自 /Users/jijin/.rvm/gems/ruby-1.9.3-p547/gems/mqtt-0.3.1/lib/mqtt/client.rb:277:in `connect' 来自 /Users/jijin/.rvm/gems/ruby-1.9.3-p547/gems/mqtt-0.3.1/lib/mqtt/client.rb:93:in `connect' 来自 lib/mqtt/apollo_subscribe.rb:4:in `'
当我将主机和端口更改为:
MQTT::Client.connect("test.mosquitto.org", 1883)
测试没问题,但是当我将主机更改为 localhost 并且无论我将端口更改为 1883 还是 61613 时,都会发生错误。我不知道现在该怎么办。