Messages in nyssr.net are always asynchronous and always object-to-object messages.
This means that message processing targets are almost always in a waiting state to wake up for processing an
incoming message.
All other patterns like Observer, Notification, Services, Broadcasts and so on are based on this principle.
Bi-directionality
A message is directed, which means that it is always transported from a sender to a receiver.
The sender address as well as the receiver address is part of the envelope.
However, messages are in very many cases returned to the sender after processing by the receiver.
For this, the sender must want this and set a "wantAnswer" flag.
If errors occur during the delivery of the message, they will be returned in any case.
This handshake is a fundamental principle of nyssr.net and a distinguishing feature from techniques such as JMS.
Shipping across the network
Sending messages works across the entire nyssr.net, regardless of the number of nodes.
The only requirement is that the message has a valid sender and recipient address.
Since many paths usually lead to the destination in a mesh network, the system selects the most favorable path for
delivery.
For this purpose, the network is constantly measured.
Unlike HTTP, the channels to which the nodes are connected are kept open all the time.
This is also an important building block for creating high performance in the network.
Interruptions are immediately detected and communicated to all nodes in the system.
This way, a message can change its route even during delivery.