Denis Chudov created IGNITE-20296:
-------------------------------------
Summary: Make a network message handler that would be able to
accept ClusterNode as a sender ag
Key: IGNITE-20296
URL: https://issues.apache.org/jira/browse/IGNITE-20296
Project: Ignite
Issue Type: Improvement
Reporter: Denis Chudov
*Motivation*
With {{MessagingService}} we have an ability to send message using
{{ClusterNode}} to specify a recipient. But in {{NetworkMessageHandler}} we
have only ability to receive consistent id of a sender. However, in some cases
we need node id (for example, knowing that there is no node we the given id in
a cluster, allows us to not send message there at all, because this node has
left the topology at least once since it had sent this message and therefore
this node lost its volatile state)
Also, the node id should go along with consistent id, so
{color:#172b4d}{{ClusterNode}} {color}as the argument type is preferred.
*Definition of done*
The following interface is available:
{code:java}
public interface NetworkMessageHandler {
/**
* Method that gets invoked when a network message is received.
*
* @param message Message, which was received from the cluster.
* @param sender Sender node.
* @param correlationId Correlation id. Used to track correspondence
between requests and responses. Can be {@code null} if the received
* message is not a request from a {@link MessagingService#invoke}
method from another node.
*/
void onReceived(NetworkMessage message, ClusterNode sender, @Nullable Long
correlationId);
} {code}
Also, the {{MessagingService }}is able to accept an object implementing this
interface as a message handler.
*Implementation notes*
The ClusterNode passed as a sender should have a node id which the sender node
had at the moment the message was sent.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)