Hi Gordon,

I still have some questions. Hope I didn't bother you too much. I will still 
use this model to explain my question.

A(on node 1) ---> B (on node 2)


>Correct, the qpid-route tool will connect to the first broker details and ask 
>it to create the route/link. The first broker will then establish a TCP socket 
>to the second and after going through the AMQP connection protocol, (by 
>default) subscribe to receive messages as directed.

The first broker in qpid-route is dest broker. Do you mean 'B' here? But from 
your next explanation 'A' sounds more reasonable. But..er..but why we can 
establish a route without 'A'? I mean I can use "qpid-route route add B A xxxx 
xxx" to create a route successfully (well I just see no error return) when 'A' 
is actually missing. I can later start to run broker 'A'. so if 'A' is the one 
which need to link to 'B', how can it possibly know who is 'B'? since when we 
run qpid-route to add a route, we don’t have 'A'. 

>It is therefore A that records the existence of this interbroker link. 
>  From the point of view of B, A is (almost) just like any other client.

> The broker B doesn't really know about the route. It is A that has that 
> knowledge. It is always A that will attempt to re-establish the connection. 
> If the connection between them is broker A will keep retrying indefinitely to 
> reconnect. A can also durably record the details of the link such that if it 
> restarts it can again resume trying to establish the connection.

It sounds that if 'A' and 'B' are both active and also route is there. The 
connection between 'A' and 'B' will always be okay? But in one of our project 
we have met such problem (well it's very hard to reproduce): node 1 where 'A' 
is running is down and after for a while node 1 is up again and 'A' is also 
active again. We check 'A' and 'B', both are running. And we also check 
"qpid-route route list xxx" and found there is a route between 'A' and 'B'. but 
the result is there is no message flow between 'A' and 'B'. after we kill 'B' 
and restart 'B' and use "qpid-route route add B A xxx xxx", everything is okay 
then. So it sounds there is a stale route between 2 brokers. If 'A' can durably 
record the details of the link and even it can establish the connection after 
it resume. Er..I don’t think this issue will happen. Wait. How can 'A' record 
the details? Maybe save information in a file? Maybe it's because 'A' lost 
these information? 


To summarize my questions: 
1) what will happen when only broker 'B' is active and meanwhile we run 
"qpid-route route add B A xx xxx" to add a route? According to Pavel Moravec's 
mail, 'B' will try to link to 'A' for several times until it gives up. But you 
just said it's 'A' which will establish the route. I felt confused here.  
2) Is it possible to have both 'A' and 'B' and route available but still cannot 
pass the message? 
3) sorry I just think one more problem: I just noticed that there is an option 
called " -d, --durable         Added configuration shall be durable". I found 
the explain " A durable route survives broker restarts, restoring a route as 
soon as both the source broker and the destination are available. If the 
connection to a destination is lost, messages associated with a durable route 
continue to accumulate on the source, so they can be retrieved when the 
connection is reestablished.".  So if I added -b when I add a route, would it 
be helpful to solve the question 2?

Many thanks,
Kyrie

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected] For additional 
commands, e-mail: [email protected]

Reply via email to