1. Run7DDemo
src/main/java/com/example/enterprise/run7d/Run7DDemo.javaFührt Routing, Gate-Prüfung, Migration und Cleanup als zusammenhängendes Cutover-Szenario aus.
- Typ
- class Run7DDemo
- Verwendet
- StranglerOrderFacade, TrafficRouter, ParityLedger, CutoverGateEvaluator, DataMigrationVerifier
- Verwendet von
- —
- Einstiege
- main(String[] args)
package com.example.enterprise.run7d;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
public final class Run7DDemo {
public static void main(String[] args) {
var flags = new FeatureFlagRegistry()
.enable(FeatureFlag.USE_NEW_ORDER_ENGINE)
.enable(FeatureFlag.SHADOW_LEGACY_ORDER_ENGINE);
var parity = new ParityLedger();
var usage = new LegacyUsageMeter();
var facade = new StranglerOrderFacade(new LegacyOrderProcessor(), new NewOrderProcessor(), new TrafficRouter(flags), parity, usage);
var requests = List.of(
new OrderRequest("O-1", "C-1", List.of("A","B","C"), new BigDecimal("100.00"), "AT"),
new OrderRequest("O-2", "C-2", List.of("A"), new BigDecimal("120.00"), "DE"),
new OrderRequest("O-3", "C-3", List.of("A","B","C","D"), new BigDecimal("99.99"), "AT")
);
requests.forEach(facade::process);
flags.enable(FeatureFlag.ENABLE_HARD_CUTOVER);
var finalReceipt = facade.process(new OrderRequest("O-4", "C-4", List.of("A"), new BigDecimal("40.00"), "AT"));
var data = new DataMigrationVerifier().verify(Map.of("O-1","ok"), Map.of("O-1","ok"));
var gates = new CutoverGateEvaluator().evaluate(parity, usage, data, new OperationsReadiness(true,true,true,true));
System.out.println("RUN7D_DEMO parity=" + parity.parityRate() + " finalEngine=" + finalReceipt.engine() + " gatePassed=" + gates.passed());
}
}