Just a couple of notes from my side:
When all devices are connected we have 1 million links, which will be routed through the Dispatch Router network (from e.g. 10 Hono messaging instances and 5 application instances). Also the creation of such links should be in time (azure for example says 100/sec device connections per S1 instance).
I think we should focus on making “scalable messaging” scalable, rather than inventing a specialized routing protocol (which may or may not work). To me it looks like AMQP links are the right abstraction for this job, so we need to test its scaling limits with the current implementations and figure out how to push it forward.
If you send unsettled, then you do get flow control with message-routed traffic. The credit is not directly relayed, but messages are not silently dropped and back-pressure will be propagated. If there are no active recipients (active links with credit granted) then senders will not get credit to send messages. You can in fact use the availability of credit to send as an imperfect indication that there is a receiver on the address (or in the hone case that the device is connected).
“The availability of credit” is a good indication of wether a device is connected or not. Additionally we need to expose these as external events to other services. I wonder if there’s a way to achieve that currently, or is there are any plans to extend a router to publish these events on some address?