On 10/31/2011 07:01 PM, Daryoush Mehrtash wrote:
Thanks Gordon for your comments. It helped me a lot in understanding the
pieces. I have a few questions on the details your suggested:
You probably want to add in --ack N to the qpid-route command. That will
make transfer acknoweldeged, giving at-least-once guarantees between
brokers.
What would happen if that acks have not made it back to the broker (either
lost or inflight)? Would it stop transmission until a previous block is
acknowledged?
No, flow control is not currently used between brokers, the source can
send as many messages as it wants.
If an ack doesn't make it to the broker and the connection fails then
any in-doubt messages will be requeued and will be redelivered when the
route is re-established.
Are Acks "all-or-nothing" for whole block or is it selective? If an ack
is not received, would the whole block be send back or are
there potential for intermediate acks and selective retransmission?
Assuming I understand you its all or nothing. I.e. an ack every N
messages will accept all N messages. Generally the acknowledgement is
done as a batch.
I am potentially running brokers over lines with long delays
(e.g. satellites). Are there any timeouts that needs to be adjusted for
the brokers so as it wont give up?
Nothing I can think of.
It depends on what types of failure you wish the guarantee to survive for.
If you want durability (i.e. the ability to recover messages if either
broker is restarted) then the messages should be sent as persistent (and
all queues they pass through should be made durable).
By "messages should be sent as persistent " do you mean that durable
argument is set on the message as in:
msg = Message (....., durabule=True, ....)
Correct?
Correct.
If I understand Qpid correctly, messages are sent to an Exchange and read
from a Queue. If send is durable (assuming the stores are also installed)
but there is no queue at the time of the send, does this mean they get
persisted on the exchange until there is a queue? or will they get
discarded?
They will be discarded if there is no queue to route them to and there
is no alternate-exchange defined for the exchange.
Assuming durable message and durable queues and routes, what are
the mechanism in Qpid to clean out messages (potentially old messages) from
the exchanges, queues and routes?
You really only need to worry about queues as that is the only place
messages are stored. You can set a TTL on the message to have it expired
at some point e.g. if the data will be stale.
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]