Grid Ops Java-NodeContainer

时间:2020-01-09 10:35:45  来源:igfitidea点击:

Grid Ops函数中的NodeContainer类可以将传入消息路由到要处理它们的组件。 NodeContainer将查看传入消息中的节点ID,并将消息转发到相应的NodeReactor。 NodeReactor将查看语义协议ID +版本,并将消息转发到相应的协议反应器。协议反应器将查看传入消息的消息类型,并将消息转发到相应的消息反应器。

消息路由如下所示:

消息通常是通过TcpServer和TcpSocketsPort从外部接收的,然后传递给NodeContainer,后者在内部将消息路由到正确的MessageReactor(通过NodeReactor和ProtocolReactor实例) )。

必需的IAP消息字段

为了使此路由起作用,每个传入消息必须至少包含以下字段:

  • 接收节点ID
  • 语义协议ID
  • 语义协议版本
  • 讯息类型

这四个字段是所有语义协议的IAP消息应包含的IAP消息的一些核心字段。

创建一个NodeContainer

要使用NodeContainer,必须首先创建并配置它。这是一个创建和配置NodeContainer的示例:

byte[] messageType = new byte[]{11};
MessageReactor messageReactor = new MessageReactor(messageType) {
    @Override
    public void react(IonReader ionReader, IapMessage iapMessage) {
        System.out.println("Reacting to message");
    }
};

byte[] protocolId = new byte[]{99};
ProtocolReactor protocolReactor = new ProtocolReactor(protocolId, messageReactor);

byte[] nodeId =  new byte[]{123};
NodeReactor nodeReactor = GridOps.nodeReactor(nodeId, protocolReactor);

NodeContainer nodeContainer = GridOps.nodeContainer();

注意示例如何创建MessageReactor,ProtocolReactor,NodeReactor和NodeContainer的实例。现在," NodeContainer"已准备好接收传入的消息。