У меня есть сценарий, в котором маршрутизатор может выйти из строя, когда мой многоадресный прослушиватель присоединяется к группе. В этом случае многоадресные сообщения никогда не достигнут слушателя.
Так что я планирую дать слушателю тайм-аут, а затем снова присоединиться к группе многоадресной рассылки.
Проблема в том, что следующий код не гарантирует, что прослушиватель успешно зарегистрируется и получит многоадресные сообщения.
final MulticastSocket mcSocket = new MulticastSocket(POR);
// Join group before router started
mcSocket.joingGroup(mcAddress);
// wait until router starts
Thread.sleep(LONG_TIME);
mcSocket.leaveGroup(mcAddress);
// Join group after router started.
// Expected that this would re-register listener with router, but it doesn't
mcSocket.joingGroup(mcAddress);
// packet is never received
mcSocket.receive(packet);
Итак, что мне нужно сделать, чтобы прослушиватель перерегистрировался на маршрутизаторе?