The J2EE Engine cluster communication is provided by a communication engine that ensures the sending and delivery of messages between the cluster elements. The system is able to send messages to one cluster element, to a group of elements, or to all elements in the cluster. Cluster elements use messages to broadcast notification events.
There are several types of cluster communication depending on the abilities they provide for transferring messages. The type of cluster communication that will be used when processing one message is determined by the Cluster Manager and is transparent for the cluster elements.
The successful message delivery is guaranteed, except in cases when the corresponding element stops or is timed out. In this case, the corresponding exception occurs and can be handled by the sending party. The ability of a server element to process a notification depends on the load level of that particular VM – if the load is too high the server element will not be able to process the notification immediately.
When transferring messages, the system uses one of the following types of communication:
? Message Server Communication – the communication is established through the Message Server used as a dispatcher when sending messages.
On a Cluster Manager level, a verification is made of the threshold value of the message body size. If the size is below the threshold value, the message is sent through the Message Server. If the size is above this value, the connection is through a specially opened lazy communication channel.
The Message Server communication has a failover mechanism implemented. In case the Message Server stops before the message is sent to the recipient, the system will know that the message is not sent and will send it again when the Message Server is up and running.
? Session Communication – established through a direct connection between the dispatcher and a server in one cluster group.
There are constantly-opened connections between the elements, and the data is transferred directly without a mediator. This type of communication ensures that client requests are processed faster. The session communication is used only for one-way operations – from the dispatcher to the server in one cluster group. This type of communication is not used for server-to-server communication, or for communication between elements belonging to different cluster groups (in such cases, the system uses Message Server communication).
? Lazy Communication – lazy communication is used when transferring large messages.
This function allows large amounts of information to be exchanged quickly between two servers without using the Message Server as an intermediary. Instead, the information is transported through sockets that are opened on both servers. The main goal is to avoid overloading the Message Server.
This function is enabled for a predefined list of services and is disabled for the remaining services. You can also enable a mechanism by which lazy communication is activated when a previously defined amount of objects is transferred between two parties for a defined time interval.
The type of cluster communication that will be used is determined automatically by the system and is transparent for the user. You can only configure some of the parameters of the different communication types:
? Configuring the Message Server Communication (in the Administration Manual).
? Configuring the Session Communication (in the Administration Manual).
? Configuring the Lazy Communication (in the Administration Manual).