View Javadoc

1   package com.atlassian.messagequeue.internal.core;
2   
3   import com.atlassian.messagequeue.MessageRunnerKey;
4   import com.atlassian.messagequeue.registry.MessageRunner;
5   import com.atlassian.messagequeue.registry.MessageRunnerRegistryService;
6   
7   import javax.annotation.concurrent.ThreadSafe;
8   import java.util.Optional;
9   import java.util.concurrent.ConcurrentHashMap;
10  import java.util.concurrent.ConcurrentMap;
11  
12  /**
13   * A default message runner registry that stores registrations in memory in a concurrent data structure.
14   */
15  @ThreadSafe
16  public class DefaultMessageRunnerRegistryService implements MessageRunnerRegistryService, MessageRunnerRegistryHelper {
17      private final ConcurrentMap<MessageRunnerKey, MessageRunner> registry;
18  
19      public DefaultMessageRunnerRegistryService() {
20          this.registry = new ConcurrentHashMap<>();
21      }
22  
23      @Override
24      public void registerMessageRunner(MessageRunnerKey messageRunnerKey, MessageRunner messageRunner) {
25          registry.put(messageRunnerKey, messageRunner);
26      }
27  
28      @Override
29      public void unregisterMessageRunner(MessageRunnerKey messageRunnerKey) {
30          registry.remove(messageRunnerKey);
31      }
32  
33      @Override
34      public Optional<MessageRunner> getMessageRunner(MessageRunnerKey messageRunnerKey) {
35          return Optional.ofNullable(registry.get(messageRunnerKey));
36      }
37  }