Class AxonServerTenantSnapshotStoreFactory
- All Implemented Interfaces:
MultiTenantAwareComponent,TenantSnapshotStoreFactory,DescribableComponent
TenantSnapshotStoreFactory, building one SnapshotStore per
tenant against that tenant's Axon Server context.
Stores are created lazily and cached, and evicted on tenant removal, by a TenantScopedCache this factory
holds. Following the tenant lifecycle is delegated to that cache through MultiTenantAwareComponent. The
underlying connection is owned by the connection manager, which disconnects it on tenant removal, so eviction only
drops the stale store and a re-added tenant rebuilds a fresh one.
- Since:
- 5.3.0
- Author:
- Jakob Hatzl, Laura Devriendt
-
Constructor Summary
ConstructorsConstructorDescriptionAxonServerTenantSnapshotStoreFactory(AxonServerConnectionManager connectionManager, Converter converter) Constructs anAxonServerTenantSnapshotStoreFactory.AxonServerTenantSnapshotStoreFactory(Configuration configuration) Constructs anAxonServerTenantSnapshotStoreFactory, resolving the connection manager and converter from the givenconfiguration. -
Method Summary
Modifier and TypeMethodDescriptionvoiddescribeTo(ComponentDescriptor descriptor) Describe the properties ofthis DescribableComponentwith the givendescriptor.registerAndStartTenant(TenantDescriptor tenantDescriptor) Registers the giventenantDescriptoras a known tenant with this multi-tenant aware component.registerTenant(TenantDescriptor tenantDescriptor) Registers the giventenantDescriptoras a known tenant with this multi-tenant aware component.storeFor(TenantDescriptor tenant) Returns theSnapshotStoreof the giventenant.
-
Constructor Details
-
AxonServerTenantSnapshotStoreFactory
Constructs anAxonServerTenantSnapshotStoreFactory, resolving the connection manager and converter from the givenconfiguration.- Parameters:
configuration- the configuration providing the connection manager and converter
-
AxonServerTenantSnapshotStoreFactory
public AxonServerTenantSnapshotStoreFactory(AxonServerConnectionManager connectionManager, Converter converter) Constructs anAxonServerTenantSnapshotStoreFactory.- Parameters:
connectionManager- the connection manager providing each tenant's Axon Server connectionconverter- the converter used to (de)serialize snapshot payloads
-
-
Method Details
-
storeFor
Description copied from interface:TenantSnapshotStoreFactoryReturns theSnapshotStoreof the giventenant.- Specified by:
storeForin interfaceTenantSnapshotStoreFactory- Parameters:
tenant- the tenant to return the snapshot store for- Returns:
- the tenant's
SnapshotStore
-
registerTenant
Description copied from interface:MultiTenantAwareComponentRegisters the giventenantDescriptoras a known tenant with this multi-tenant aware component.The caller must retain the returned
Registrationand cancel it when the tenant is removed, since releasing the component's per-tenant resources rides on that cancellation.- Specified by:
registerTenantin interfaceMultiTenantAwareComponent- Parameters:
tenantDescriptor- TheTenantDescriptorto register with this component.- Returns:
- A
Registrationused to deregister the giventenantDescriptor.
-
registerAndStartTenant
Description copied from interface:MultiTenantAwareComponentRegisters the giventenantDescriptoras a known tenant with this multi-tenant aware component. If applicable, this task will construct a tenant segment and start it.- Specified by:
registerAndStartTenantin interfaceMultiTenantAwareComponent- Parameters:
tenantDescriptor- TheTenantDescriptorto register with this component.- Returns:
- A
Registrationused to deregister the giventenantDescriptor.
-
describeTo
Description copied from interface:DescribableComponentDescribe the properties ofthis DescribableComponentwith the givendescriptor.Components should call the appropriate
describePropertymethods on the descriptor to register their properties. The descriptor is responsible for determining how these properties are formatted and structured in the final output.Best Practices: As a general rule, all relevant fields of a
DescribableComponentimplementation should be described in this method. However, developers have discretion to include only the fields that make sense in the context. Not every field may be meaningful for description purposes, especially internal implementation details. Furthermore, components might want to expose different information based on their current state. The final decision on what properties to include lies with the person implementing thedescribeTomethod, who should focus on providing information that is useful for understanding the component's configuration and state.Example implementation:
public void describeTo(ComponentDescriptor descriptor) { descriptor.describeProperty("name", this.name); descriptor.describeProperty("enabled", this.enabled); descriptor.describeProperty("configuration", this.configuration); // A nested component descriptor.describeProperty("handlers", this.eventHandlers); // A collection }- Specified by:
describeToin interfaceDescribableComponent- Parameters:
descriptor- The component descriptor to describethis DescribableComponentn its properties in.
-