Hi,
What you are trying to do should just work, so lets go back to basics.
Here is the most simple example demonstrating how durable subscriptions work:
1. Connect the subscriber client to the broker, with clean-session set
to false. By default, the Paho java client uses clean-session set to
true, so you must pass in an instance of MqttConnectOptions to the
connect method having set clean-session to false.
2. Subscribe the client to the topic you want at Qos 1 or 2.
3. Disconnect the client.
4. From another client, publish messages to the topic at Qos 1 or 2.
5. Re-connect the subscriber. You must use the same Client ID as
before and clean-session must still be false. Ensure you have
registered a callback handler (MqttClient.setCallback) before you
connect. As soon as you connect, the messages will arrive.
How does that compare to what you are trying?
Cheers,
Nick