我有一个订阅主题的队列。我的MQTT客户端向主题发布消息。我的Java程序使用JCSMP API消耗来自队列的消息。但是,我注意到我的Java程序从队列接收的消息的传递模式是DIRECT或有时是非持久性的。那么,这是否意味着我的消息不会被假脱机到SAN?我是否可以为我的队列设置主题订阅,以便从主题接收并存储在此队列中的所有消息都是持久的?
谢谢。
答案 0 :(得分:2)
当Solace设备收到发布到与队列中的主题订阅集匹配的主题的消息时,该消息将被传递到队列并进行假脱机。如果此消息最初使用DIRECT传送模式设置,则传送模式将提升为NON-PERSISTENT。 NON-PERSISTENT消息被视为保证消息并将被假脱机。
如果您收到NON-PERSISTENT消息,则该消息已在队列中正确假脱机。
当Solace设备收到一条消息,该消息已发布到与客户端上直接应用的主题订阅相匹配的主题时,它们的消息将不会被假脱机,并且将在不排队的情况下直接发送到客户端。如果此消息最初以非持久性或持久性交付模式发布,则它将被降级并由客户端作为DIRECT接收。
如果您正在接收传送模式为DIRECT的邮件,请验证客户端是否未直接订阅该主题。该主题应该应用于客户端绑定的队列。