1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package ch.syabru.nagios.broker.impl;
17
18 import java.util.ArrayList;
19
20 import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory;
22
23 import ch.syabru.nagios.broker.MessageListener;
24 import ch.syabru.nagios.broker.MessageListenerManager;
25
26
27
28
29
30
31
32 public class MessageListenerManagerImpl implements MessageListenerManager {
33 private final Logger logger = LoggerFactory.getLogger(
34 MessageListenerManagerImpl.class);
35
36 private ArrayList<MessageListener> failedListeners =
37 new ArrayList<MessageListener>();
38
39 @Override
40 public void addForReconnect(MessageListener listener) {
41 synchronized (failedListeners) {
42 failedListeners.add(listener);
43 }
44 }
45
46 @Override
47 public void reconnect() {
48 ArrayList<MessageListener> listeners = new ArrayList<MessageListener>();
49 synchronized (failedListeners) {
50 listeners.addAll(failedListeners);
51 failedListeners.clear();
52 }
53 for (MessageListener listener : listeners) {
54 logger.info("Retry registering message listener [{}]",
55 listener.getId());
56 listener.registerListener();
57 }
58 }
59
60 }