I think javadocs are not 100% correct. I am pretty sure exception will be thrown if connection to some node cannot be established, but if node A already have active connections to all nodes you want to send message to then message will be put to per-connection queues and will be sent in async manner.
I think you can introduce new method that waits until message is acked from all nodes or throws exception if any of the target nodes leave. See: org.apache.ignite.internal.managers.communication.GridIoManager#send(org.apache.ignite.cluster.ClusterNode, java.lang.Object, int, org.apache.ignite.plugin.extensions.communication.Message, byte, boolean, long, boolean, org.apache.ignite.lang.IgniteInClosure<org.apache.ignite.IgniteException>) org.apache.ignite.internal.IgniteMessagingImpl --Yakov 2016-04-04 13:59 GMT+03:00 Hausmann Philipp <philipp.hausm...@fhnw.ch>: > Thank you, that already helps me a lot! > > One further question though. Given your answer and the javadoc > documentation, I assume that the unordered send method in IgniteMessaging > is blocking until > all recipients in the topic have received the message, right? And if any > of the recipients fails to receive the message, an IgniteException is > thrown? > And what happens if a new node is joining the cluster while a message is > being sent? > > If it makes sense, I could create a pull request to add this information > to the javadoc? > > Philipp > > ------------------------------ > *From:* Yakov Zhdanov [yzhda...@apache.org] > *Sent:* Monday, April 04, 2016 11:49 > *To:* user@ignite.apache.org > *Subject:* Re: Messaging Reliability > > Philipp, > > Messaging works on top of Ignite internal communication sub-system. > Message delivery is guaranteed, unless recipient node has not left the > grid. If it leaves (i.e. topology gets EVT_NODE_LEFT or EVT_NODE_FAILED), > then sender clears internal queue associated with left node. When node > receives the messages it sends internal acks to let sender now that > messages can be removed from queue. > > Message correctness is not checked additionally - we rely on TCP here. > > Let me know if you have more questions. > > Thanks! > > --Yakov > > 2016-04-04 12:13 GMT+03:00 Hausmann Philipp <philipp.hausm...@fhnw.ch>: > >> Hi all >> >> I am considering using Ignite messages to manage some jobs in my cluster. >> I've seen that one can send messages either in an ordered or unordered >> fashion, >> but the documentation does not specify any further guarantees. So far I >> have come up with the following questions: >> >> - Is delivery of point-to-point messages guaranteed? >> >> - Is delivery of topic messages to all/to some listeners guaranteed? >> >> - Is correctness of delivered messages guaranteed (e.g. bitflips)? >> >> My current impression is, that Ignite does not guarantee anything beyond >> ordering. Does anybody know anything more about this? >> >> All the best, >> Philipp >> > >