On Thu, Aug 29, 2019 at 3:58 PM Ganesh Murthy <gmur...@redhat.com> wrote:
> > > On Thu, Aug 29, 2019 at 3:48 PM Lohmann Carsten (INST/ECS4) < > carsten.lohm...@bosch-si.com> wrote: > >> > > > we have a network of 3 Qpid dispatch router instances. >> > > > A client is connected to router instance A and has opened a >> receiver link >> > > > on address addrA. >> > > > *After* having received the ATTACH frame for this, >> > > > another client on another machine which is connected to router >> instance B >> > > > opens a sender link on the empty address (anonymous relay). >> > > > After receiving credit, a message with the "To" address "addrA" is >> sent >> > > on >> > > > this sender link. >> > > > >> > > > With this, we frequently get a rejected disposition from the router: >> > > > Disposition{role=RECEIVER, first=2, last=null, settled=false, >> > > > state=Rejected{error=Error{condition=amqp:not-found, >> > > > description='Deliveries cannot be sent to an unavailable address', >> > > > info=null}}, batchable=false} >> > > > >> > > > Adding a delay before sending the message causes the message to be >> > > > accepted. >> > > > >> > > > >> > > > Is it correct to assume that "rejected" disposition will come when >> the >> > > > information about the "addrA" receiver on router A has not been >> > > propagated >> > > > yet to router B? >> > > > >> > > Yes, that is a correct assumption. >> > > >> > > > Is there some way to know for the message sender when it is safe to >> send >> > > > the message on the anonymous relay link without it getting rejected? >> > > > >> > > You could run a qdstat -a on the router B and make sure you see your >> > > address before starting to send on the anonymous link. >> > > >> > > Thanks. >> > > >> > > >> > Or you can re-try the send at some point. >> > Usually the router returns a Released disposition when it cannot >> forward a >> > message (as in this case the address hasn't been propagated to the >> router). >> > >> > A "Released" disposition means the message definitely has not been acted >> > upon my any receiver, so it can be re-transmitted without risk of >> > duplication. >> > >> > The reason you see Rejected instead is your router has configured the >> > "defaultDistribution" configuration option to "unavailable". That >> forces >> > the router to reject any message that cannot be forwarded. >> > >> >> ok, thanks. >> >> Unfortunately, using qdstat or anything Qpid-specific is not an option >> here for us. >> So, yes, either we could re-try sending the message or use a >> non-anonymous sender link instead. >> >> Just an idea: >> Would it be feasible for the router to only send the reply ATTACH frame >> for the receiver link creation once the address was propagated to all nodes >> of the router network? And maybe activating that behaviour via a Qpid >> configuration option. >> > Since this is an anonymous link, we send the response attach immediately > since it is not for any specific address. In the case of a non-anonymous > sender we will not send you back an attach until there is a receiver > available. > I was wrong here to say that in the case of non-anonymous sender we will not send the attach back. We DO send the attach back but dont provide credit. Thanks. > >> >> Best regards >> >> Carsten Lohmann >> >> Engineering Cloud Services 4 Bosch IoT Hub (INST/ECS4) >> Bosch Software Innovations GmbH | Ullsteinstr. 128 | 12109 Berlin | >> GERMANY | www.bosch-si.com >> >> Sitz: Berlin, Registergericht: Amtsgericht Charlottenburg; HRB 148411 B >> Aufsichtsratsvorsitzender: Dr.-Ing. Thorsten Lücke; Geschäftsführung: Dr. >> Stefan Ferber, Michael Hahn, Dr. Aleksandar Mitrovic >> >>