安慰发送 mqtt 消息时出现服务不可用错误

Service Unavailable error while sending mqtt message on solace

我在 solace VMR 上创建了一个新的消息 VPN 并将其 SSL 端口配置为 8884 。在其上配置默认 ACL 配置文件以允许发布和订阅。但是,当我尝试发布有关 "hellotopic" 等主题的任何消息时,出现了如下异常:

Exception occoured Client is currently disconnecting (32102)
Connection lost on instance "123456" with cause "Connection lost" Reason code 32109" Cause "java.io.EOFException"
Connection lost (32109) - java.io.EOFException
    at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:138)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.EOFException
    at java.io.DataInputStream.readByte(DataInputStream.java:267)
    at org.eclipse.paho.client.mqttv3.internal.wire.MqttInputStream.readMqttWireMessage(MqttInputStream.java:56)
    at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:100)
    ... 1 more

虽然在安慰 VMR 事件日志中,它立即连接并断开连接:-

2016-09-13T13:12:16+0000 <local3.info> solace event: CLIENT: CLIENT_CLIENT_CONNECT_MQTT: publisher_VPN #mqtt/1251123gf/216 Client (108) #mqtt/1251123gf/216 username default ClientId (1251123gf) connected to XXX.XX.XX.XX:8884 from XXX.XX.XX.XX:59736 SslVersion(TLSv1.2) SslCipher(ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256) authScheme(Basic) Clean(0) Will(0)

2016-09-13T13:12:16+0000 <local3.info> solace event: CLIENT: CLIENT_CLIENT_DISCONNECT_MQTT: publisher_VPN #mqtt/1251123gf/216 Client (108) #mqtt/1251123gf/216 username default ClientId (1251123gf) **reason(Service Unavailable)** final statistics - dp(1, 1, 0, 0, 1, 1, 25, 4, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) conn(0, 0, XXX.XX.XX.XX:59654, ESTAB, 0, 0, 0) mqtt(1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0), SslVersion(TLSv1.2), SslCipher(ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256), WillSent(0). 

试图找到这个问题的解决方案,得到了一些关于我无权发布以下主题的信息。

P.S。 - 我可以在默认的 VPN SSL 端口上发布消息。

必须在 Solace VMR 上为 Message VPN 启用 MQTT SSL 服务,以便 MQTT 客户端连接到 Message VPN 的端口。

要使用 CLI 启用 MQTT SSL 服务,您可以使用以下命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service mqtt
solace(configure/message-vpn/service/mqtt)# no ssl shutdown

要使用 SolAdmin 启用 MQTT SSL 服务,请导航至 'Message VPNs, ACLs & Bridges' 选项卡。在 'Message VPNs' 视图下,右键单击 Message VPN 和 select 'Change Service Status'。将出现一个弹出窗口 window,您可以在其中单独启用每项服务。

您说您可以在 QoS 0 而不是 1 下发布消息:您是否在消息 VPN 上配置了假脱机大小?您可能想查看(第 17 步)的 Product Documentation 并将大小添加到 Maximum Spool Usage 属性:

Maximum Spool Usage

The maximum amount of message spool disk space (in MB) the Message VPN may use. Note: No policing is done to ensure that the sum of all of the message spool quota allocated to Message VPNs does not exceed the router-wide message spool quota.

默认情况下,属性 的值设置为 0,您可以尝试将其设置为 5 或 10(以 MB 为单位)。