JGroups is a toolkit for reliable multicast communication. It can be used to create groups of processes whose members can send messages to each other.
JGroups enables developers to create reliable multipoint (multicast) applications where reliability is a deployment issue. JGroups also relieves the application developer from implementing this logic themselves.
This saves significant development time and allows for the application to be deployed in different environments without having to change code.
JGroups Features
Group creation and deletion. Group members can be spread across LANs or WANs
Joining and leaving of groups
Membership detection and notification about joined/left/crashed members
Detection and removal of crashed members
Sending and receiving of member-to-group messages (point-to-multipoint)
Sending and receiving of member-to-member messages (point-to-point)
Flexible Protocol Stack
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 number of protocols (but anyone can write their own), for example
Transport protocols: UDP (IP Multicast), TCP, JMS
Fragmentation of large messages
Reliable unicast and multicast message transmission. Lost messages are retransmitted
Failure detection: crashed members are excluded from the membership
Ordering protocols: Atomic (all-or-none message delivery), Fifo, Causal, Total Order (sequencer or token based)
Membership
Encryption
Documentation
Since JGroups is a key component of JBoss AS clustering and caching, you should review the JBoss AS documentation for details beyond the documentation outlined below which
is mostly intended for those interested in using JGroups standalone.