com.hazelcast.spi.discovery

## Interface DiscoveryStrategy

- All Known Implementing Classes:
    AbstractDiscoveryStrategy, MulticastDiscoveryStrategy

      public interface DiscoveryStrategy

  The `DiscoveryStrategy` itself is the actual implementation to discover nodes based on whatever environment is used to run the Hazelcast cloud. The internal implementation is completely vendor specific and might use external Java libraries to query APIs or send requests to a external REST service.

  `DiscoveryStrategies` are also free to define any kind of properties that might be necessary to discover eligible nodes based on configured attributes, tags or any other kind of metadata.

  Using the simple lifecycle management strategies like multicast discovery is able to register and destroy sockets based on Hazelcast’s lifecycle. Deactivated services will also never be started.

  Attention: Instead of implementing this interface directly, implementors should consider using the abstract class `AbstractDiscoveryStrategy` instead for easier upgradeability while this interface evolves.
  Since:
    3.6

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `destroy()` The `stop` method is used to stop internal services, sockets or to destroy any kind of internal state.
    `Map<String,Object>` | `discoverLocalMetadata()` Returns a map with discovered metadata provided by the runtime environment.
    `Iterable<DiscoveryNode>` | `discoverNodes()` Returns a set of all discovered nodes based on the defined properties that were used to create the `DiscoveryStrategy` instance.
    `PartitionGroupStrategy` | `getPartitionGroupStrategy()` Returns a custom implementation of a `PartitionGroupStrategy` to override default behavior of zone aware backup strategies `PartitionGroupMetaData` or to provide a specific behavior in case the discovery environment does not provide information about the infrastructure to be used for automatic configuration.
    `void` | `start()` The `start` method is used to initialize internal state and perform any kind of startup procedure like multicast socket creation.

- - ### Method Detail

    - #### start

          void start()

      The `start` method is used to initialize internal state and perform any kind of startup procedure like multicast socket creation. The behavior of this method might change based on the `DiscoveryNode` instance passed to the `DiscoveryStrategyFactory`.

    - #### discoverNodes

          Iterable<DiscoveryNode> discoverNodes()

      Returns a set of all discovered nodes based on the defined properties that were used to create the `DiscoveryStrategy` instance.
      Returns:
        a set of all discovered nodes

    - #### destroy

          void destroy()

      The `stop` method is used to stop internal services, sockets or to destroy any kind of internal state.

    - #### getPartitionGroupStrategy

          PartitionGroupStrategy getPartitionGroupStrategy()

      Returns a custom implementation of a `PartitionGroupStrategy` to override default behavior of zone aware backup strategies `PartitionGroupMetaData` or to provide a specific behavior in case the discovery environment does not provide information about the infrastructure to be used for automatic configuration.
      Returns:
        a custom implementation of a `PartitionGroupStrategy` otherwise `null` in case of the default implementation is to be used
      Since:
        3.7

    - #### discoverLocalMetadata

          Map<String,Object> discoverLocalMetadata()

      Returns a map with discovered metadata provided by the runtime environment. Those information may include, but are not limited, to location information like datacenter, rack, host or additional tags to be used for custom purpose.

      Information discovered from this method are shaded into the `Member`s attributes. Existing attributes will not be overridden, that way local attribute configuration overrides provided metadata.

      The default implementation provides an empty map with no further metadata configured. Returning `null` is not permitted and will most probably result in an `NullPointerException` inside the cluster system.
      Returns:
        a map of discovered metadata as provided by the runtime environment
      Since:
        3.7

Copyright © 2020. All rights reserved.