After further investigation, I found the "--ack=10" parameter hasn't pass
to the subscription.
qpid: show 126
Attribute 126
=========================
sessionRef 124
queueRef 118
name My.topic
browsing False
acknowledged False
exclusive True
creditMode WINDOW
arguments {}
delivered 2000
But if "--ack=10" was apply to a queue route, the "acknowledged" row will
be "True".
2015-07-23 14:36 GMT+08:00 Haoliang Chen <[email protected]>:
> The result is easier to reproduce if the dest broker was
> set --default-queue-limit 10240.
>
> And the dest broker will throw:
> 2015-07-23 14:31:43 [Broker] warning Exchange My.topic cannot deliver to
> queue My.topic_284ad1f5-b871-4c13-9a59-f1d6319b8286:
> resource-limit-exceeded: Maximum depth exceeded
> on My.topic_284ad1f5-b871-4c13-9a59-f1d6319b8286: current=[count: 8, size:
> 9152], max=[size: 10240]
> (/home/MQ/qpid-cpp-0.32/src/qpid/broker/Queue.cpp:1628)
>
> As you see, this problem also happened on 0.32 Brokers.
>
> 2015-07-22 17:33 GMT+08:00 Haoliang Chen <[email protected]>:
>
>> Hello all,
>>
>> I was attempting to establish a reliable route between two exchanges on
>> two brokers, but
>> failed. It seem like the packages start to be dropped by the source
>> broker once its buffer
>> was full. I want the source broker stop to recive if its buffer was full.
>>
>> I have a federation consist of two 0.30 brokers on different computers,
>> donate by B1 and B2.
>> Both run on the same config,
>>
>> auth=no
>> realm=QPID
>> data-dir=/home/MQ/broker-data/
>>
>> And I new a exchange on both brokers using the following command:
>> qpid-config -b B1 add exchange topic My.topic --durable
>> qpid-config -b B2 add exchange topic My.topic --durable
>>
>> Then I add route:
>> qpid-route -d --ack=10 dynamic add B1 B2 My.topic
>> qpid-route -d --ack=10 dynamic add B2 B1 My.topic
>>
>> Then I start to recived from B1 with the 0.32 qpid-recieve on Windows:
>> qpid-receive -b B1 -a My.topic --verify-sequence --print-content 0
>> --timeout 100
>> --report-every 100000
>>
>> And I start to flood B2 with the 0.32 qpid-send on Windows:
>> qpid-send -b B2 -a My.topic -m 0 --durable yes --content-size 10240
>> --report-every 100000
>>
>> Not long after, the qpid-receive stop and I Got:
>> qpid-receive: Gap in sequence numbers 18987-19742
>> (..\..\..\qpid-cpp-0.32\src\te
>> sts\qpid-receive.cpp:172)
>>
>> Meanwhile the qpid-send keep running and sending. The Task Manager shown
>> a static outgoing
>> rate.
>>
>> Here are the output of #qpid-stat -e -b B1
>> Exchanges
>> exchange type dur bind msgIn msgOut msgDrop byteIn
>> byteOut byteDrop
>>
>> ===========================================================================================
>> direct 2 0 0 0 0
>> 0 0
>> My.topic topic Y 0 110k 29.8k 81.1k 1.14g
>> 307m 835m
>> ...
>>
>> Here are the output of #qpid-stat -e -b B2
>> Exchanges
>> exchange type dur bind msgIn msgOut msgDrop byteIn
>> byteOut byteDrop
>>
>> ===========================================================================================
>> direct 2 0 0 0 0
>> 0 0
>> My.topic topic Y 0 29.6k 29.6k 0 306m
>> 306m 0
>> ...
>>
>> And the network info:
>> WindowsClient to B1/B2 is faster than B1/B2 to WindowsClient;
>> B1/B2 is connected to the same switch.
>>
>> If I send to and receive form the same broker, it works well. No msg was
>> lost, very reliable.
>> Incomming message will be rejected or jammed once the broker's buffer was
>> full. The Task
>> Maneger shown pauses on outgoing rate.
>>
>> I want the federation behave like that, jam the sender once the broker's
>> buffer was full and
>> don't drop any message. What did I miss?
>>
>> Sorry for the english, I am not a native english speaker.
>>
>> Harris
>>
>
>