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]
