@RestController
@RequestMapping(value="${axon.distributed.spring-cloud.fallback-url:/message-routing-information}")
public class SpringCloudHttpBackupCommandRouter
extends SpringCloudCommandRouter
SpringCloudCommandRouter which has a
backup mechanism to provide Message Routing Information for other nodes and to retrieve Message Routing Information
from other Axon nodes.
It is annotated with the RestController and contains the
GetMapping annotated
getLocalMessageRoutingInformation() function to have a queryable place to
retrieve this node its Message Routing Information.
The default endpoint for this is "/message-routing-information".
To configure this endpoint the "axon.distributed.spring-cloud.fallback-url" application property should be adjusted.
For retrieving the Message Routing Information from other Axon nodes, it uses a
RestTemplate to request Message Routing Information through an override of the
getMessageRoutingInformation(ServiceInstance) function.
serializer| Constructor and Description |
|---|
SpringCloudHttpBackupCommandRouter(org.springframework.cloud.client.discovery.DiscoveryClient discoveryClient,
RoutingStrategy routingStrategy,
Predicate<org.springframework.cloud.client.ServiceInstance> serviceInstanceFilter,
org.springframework.web.client.RestTemplate restTemplate,
String messageRoutingInformationEndpoint)
Initialize a
CommandRouter with the given DiscoveryClient to update its own membership as a CommandRouter and to create its own awareness of available nodes to send commands to in a ConsistentHash. |
SpringCloudHttpBackupCommandRouter(org.springframework.cloud.client.discovery.DiscoveryClient discoveryClient,
RoutingStrategy routingStrategy,
org.springframework.web.client.RestTemplate restTemplate,
String messageRoutingInformationEndpoint)
Initialize a
CommandRouter with the given DiscoveryClient to update its own membership as a CommandRouter and to create its own awareness of available nodes to send commands to in a ConsistentHash. |
| Modifier and Type | Method and Description |
|---|---|
MessageRoutingInformation |
getLocalMessageRoutingInformation()
Get the local
MessageRoutingInformation, thus the MessageRoutingInformation of the node this
CommandRouter is a part of. |
protected Optional<MessageRoutingInformation> |
getMessageRoutingInformation(org.springframework.cloud.client.ServiceInstance serviceInstance)
Retrieve the
MessageRoutingInformation of the provided serviceInstance. |
void |
updateMembership(int loadFactor,
Predicate<? super CommandMessage<?>> commandFilter)
Updates the load factor and capabilities of this member representing the current endpoint if the implementation
allows memberships to be updated dynamically.
|
buildSimpleMember, findDestination, serviceInstanceMetadataContainsMessageRoutingInformation, updateMemberships@Autowired
public SpringCloudHttpBackupCommandRouter(org.springframework.cloud.client.discovery.DiscoveryClient discoveryClient,
RoutingStrategy routingStrategy,
org.springframework.web.client.RestTemplate restTemplate,
@Value(value="${axon.distributed.spring-cloud.fallback-url}:/message-routing-information")
String messageRoutingInformationEndpoint)
CommandRouter with the given DiscoveryClient to update its own membership as a CommandRouter and to create its own awareness of available nodes to send commands to in a ConsistentHash.
The routingStrategy is used to define the key based on which Command Messages are routed to their
respective handler nodes.
The RestTemplate is used as a backup mechanism to request another member's
MessageRoutingInformation with.
Uses a default Predicate<ServiceInstance> filter function which allows any
ServiceInstance through the update membership process.discoveryClient - The DiscoveryClient used to discovery and notify other nodesroutingStrategy - The strategy for routing Commands to a NoderestTemplate - The RestTemplate used to request another member's MessageRoutingInformation
with.messageRoutingInformationEndpoint - The endpoint where to retrieve the another nodes message routing
information frompublic SpringCloudHttpBackupCommandRouter(org.springframework.cloud.client.discovery.DiscoveryClient discoveryClient,
RoutingStrategy routingStrategy,
Predicate<org.springframework.cloud.client.ServiceInstance> serviceInstanceFilter,
org.springframework.web.client.RestTemplate restTemplate,
String messageRoutingInformationEndpoint)
CommandRouter with the given DiscoveryClient to update its own membership as a CommandRouter and to create its own awareness of available nodes to send commands to in a ConsistentHash.
The routingStrategy is used to define the key based on which Command Messages are routed to their
respective handler nodes.
A Predicate<ServiceInstance> to filter a ServiceInstance from
the membership update loop.
The RestTemplate is used as a backup mechanism to request another member's
MessageRoutingInformation with.discoveryClient - The DiscoveryClient used to discovery and notify other nodesroutingStrategy - The strategy for routing Commands to a NodeserviceInstanceFilter - The Predicate<ServiceInstance> used to filterrestTemplate - The RestTemplate used to request another member's MessageRoutingInformation
with.messageRoutingInformationEndpoint - The endpoint where to retrieve the
another nodes message routing
information frompublic void updateMembership(int loadFactor,
Predicate<? super CommandMessage<?>> commandFilter)
CommandRouterupdateMembership in interface CommandRouterupdateMembership in class SpringCloudCommandRouterloadFactor - the new load factor of the member for this endpointcommandFilter - the new capabilities of the member for this endpoint@GetMapping public MessageRoutingInformation getLocalMessageRoutingInformation()
MessageRoutingInformation, thus the MessageRoutingInformation of the node this
CommandRouter is a part of. Can either be called directly or through a GET operation on the specified
messageRoutingInformationEndpoint of this node.MessageRoutingInformation if the node this CommandRouter implementation is part of.protected Optional<MessageRoutingInformation> getMessageRoutingInformation(org.springframework.cloud.client.ServiceInstance serviceInstance)
SpringCloudCommandRouterMessageRoutingInformation of the provided serviceInstance. If the
MessageRoutingInformation could not be found, an Optional.empty() will be returned. Otherwise the
MessageRoutingInformation will be contained in the Optional.getMessageRoutingInformation in class SpringCloudCommandRouterserviceInstance - A ServiceInstance to retrieve MessageRoutingInformation from.Optional of type MessageRoutingInformation, containing the corresponding
MessageRoutingInformation for the given serviceInstance if it could be retrieved.Copyright © 2010–2017. All rights reserved.