Hi there,

I'm struggling against a possible issue using Apollo MQTT and it's durable
subscriptions. My intention is to synchronize a client using QOS 1.

Here is my setup:

Apollo Dev Snapshot, based on: 20130803 tarball
Mosquitto (Pub, Sub and Lib) 1.2.0

I noticed that some client messages were on the dsub queue but got stuck
there and wouldn't be delivered. I suspected on my custom client and tried
some testing using Mosquitto.

So, I started by running the mosquitto broker:
> mosquitto -p 61613

Then (in another terminal, same machine) I started a client using:
> mosquitto_sub -h 172.16.1.220  -p 61613 -q 1 -c -i my_id -t foo

I killed the mosquito_sub by ctrl-c and published some messages to the foo
channel:
> for I in {1..10}; do (mosquitto_pub -h 172.16.1.220 -p 61613 -t foo -q 1
-m "$I") done

Finally, I restarted the mosquito_sub and got all the messages, in order
(which is quite important in this application):
> mosquitto_sub -h 172.16.1.220  -p 61613 -q 1 -c -i my_id -t foo

I also tried having sub and pub running both at the same time, results were
as expected. Actually, I even tried killing the mosquitto_sub proccess in
the middle of the stream and restarting it again while the mosquitto_pub
bash loop was still running. It received all the messages and kept ordering.

I then repeated this testing session using the Apollo broker instead of
mosquitto. These were my results:

1) In the first test scenario, mosquitto_sub won't receive any messages.
They will remain on the dsub forever. I might mention that there's a
stranger acquirer unknown on the dsub's web interface and by consulting the
dsub's rest API there's indication of consumers position being 11 (or
number of messages+1).

2) During the drop during the loop test. I got all the messages that were
published when both parties were running, but not those that were still on
the dsub and were sent when the mosquitto_sub was down.

These results lead me to suspect of Apollo's consumer's position tracking
systems on dsubs, which seems not to keep track of the last consumed
message properly.

Can you reproduce this test or offer an explanation for the diverging
behaviors between the mosquitto broker and Apollo?

Best Regards,

L. Bragatti

Reply via email to