So I can recreate something *similar*.

If I just run it as you describe:

* mosquitto_sub -h 172.16.1.220  -p 61613 -q 1 -c -i my_id -t foo
* then kill mosquitto_sub
* run producer > for I in {1..10}; do (mosquitto_pub -h 172.16.1.220 -p
61613 -t foo -q 1 -m "$I") done
* then restart mosquitto_sub

it works just fine....

but if I happen to do this, then I can reproduce what you see on Apollo:

* mosquitto_sub -h 172.16.1.220  -p 61613 -q 1 -c -i my_id -t foo
* then kill mosquitto_sub
* run consumer again: mosquitto_sub -h 172.16.1.220  -p 61613 -q 1 -c -i
my_id -t foo
* then kill mosquitto_sub
* run producer > for I in {1..10}; do (mosquitto_pub -h 172.16.1.220 -p
61613 -t foo -q 1 -m "$I") done
* then restart mosquitto_sub

Seems to wok on mosquitto. I'll take a closer look when I get a sec....




On Fri, Aug 16, 2013 at 2:21 PM, Leonardo Bragatti
<lbraga...@tegris.com.br>wrote:

> 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
>



-- 
*Christian Posta*
http://www.christianposta.com/blog
twitter: @christianposta

Reply via email to