abstract fun send(message: Message, target: MessageRecipients): Unit
Sends a message to the given receiver. The details of how receivers are identified is up to the messaging implementation: the type system provides an opaque high level view, with more fine grained control being available via type casting. Once this function returns the message is queued for delivery but not necessarily delivered: if the recipients are offline then the message could be queued hours or days later.
There is no way to know if a message has been received. If your protocol requires this, you need the recipient to send an ACK message back.