ActiveMQ MQTT(QoS 1)不';t在客户端未确认消息时重新发布消息

ActiveMQ MQTT(QoS 1)不';t在客户端未确认消息时重新发布消息,activemq,mqtt,Activemq,Mqtt,我使用ActiveMQ5.10作为MQTT代理,一个Java客户端在JMS中发送消息,一个C客户端接收消息 以下是Java代码片段: MessageProducer producer = session.createProducer(new ActiveMQTopic("topic1")); TextMessage text = session.createTextMessage("test msg"); text.setIntProperty("ActiveMQ.MQTT.QoS",1); p

我使用ActiveMQ5.10作为MQTT代理,一个Java客户端在JMS中发送消息,一个C客户端接收消息

以下是Java代码片段:

MessageProducer producer = session.createProducer(new ActiveMQTopic("topic1"));
TextMessage text = session.createTextMessage("test msg");
text.setIntProperty("ActiveMQ.MQTT.QoS",1);
producer.send(text);
捕获TCP包后,我确认了问题:如果ActiveMQ发送了一条消息,但没有从C客户端接收到PUBACK,则ActiveMQ不会重新发送该消息。因此,如果消息处于QoS 1下(至少一次),C客户机将不再接收消息


如何使用JMS(和/或配置ActiveMQ)发送消息以使QoS 1真正工作?非常感谢

这是一个非常旧的版本,缺少许多MQTT修复,您需要移动到最新版本才能修复。谢谢您,Tim!我正在尝试升级itActiveMQ 5.14,但它也不会重新发布该消息。消息是否应该持久化?OMG,MQTT v3.1.1不需要重新发送消息():
当客户端重新连接并将CleanSession设置为0时,客户端和服务器都必须使用原始数据包标识符[MQTT-4.4.0-1]重新发送任何未确认的发布数据包(其中QoS>0)和PUBREL数据包。这是唯一需要客户端或服务器重新传递消息的情况。