// JGroups

JGroups is a toolkit for reliable messaging. It can be used to create clusters 
whose nodes can send messages to each other.

The main features include:

1. Cluster creation and deletion. Cluster nodes can be spread across LANs or WANs
2. Joining and leaving of clusters
3. Membership detection and notification about joined/left/crashed cluster nodes
4. Detection and removal of crashed nodes
5. Sending and receiving of node-to-cluster messages (point-to-multipoint)
6. Sending and receiving of node-to-node messages (point-to-point)

The most powerful feature of JGroups is its flexible protocol stack, which allows 
developers to adapt it to exactly match their application requirements and network 
characteristics.  The benefit of this is that you only pay for what you use. By 
mixing and matching protocols, various differing application requirements can be 
satisfied. JGroups comes with a large number of protocols (but anyone can write 
their own), for example:

# Transport protocols: UDP (IP Multicast) or TCP
# Fragmentation of large messages
# Reliable unicast and multicast message transmission. Lost messages are retransmitted
# Failure detection: crashed nodes are excluded from the membership
# Flow control to prevent slow receivers to get overrun by fast senders
# Ordering protocols: FIFO, Total Order
# Membership
# Encryption
# Compression

JGroups allows developers to create reliable messaging (one-to-one or one-to-many) 
applications where reliability is a deployment issue, and does not have to be 
implemented by the application developer. This saves application developers 
significant amounts of time, and allows for the application to be deployed in 
different environments, without having to change code.
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License