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. > > > 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 > >