import { CircuitBreakerProviderFactory } from "@daiso-tech/core/circuit-breaker";
import { MemoryCircuitBreakerStorageAdapter } from "@daiso-tech/core/circuit-breaker/memory-circuit-breaker-storate-adapter";
import { DatabaseCircuitBreakerAdapter } from "@daiso-tech/core/circuit-breaker/database-circuit-breaker-adapter";
import { RedisCircuitBreakerAdapter } from "@daiso-tech/core/circuit-breaker/redis-circuit-breaker-adapter";
import { Serde } from "@daiso-tech/core/serde";
import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/super-json-serde-adapter";
import Redis from "ioredis"
const serde = new Serde(new SuperJsonSerdeAdapter());
const circuitBreakerProviderFactory = new CircuitBreakerProviderFactory({
serde,
adapters: {
memory: new DatabaseCircuitBreakerAdapter({
adapter: new MemoryCircuitBreakerStorageAdapter()
}),
redis: new RedisCircuitBreakerAdapter({
database: new Redis("YOUR_REDIS_CONNECTION")
}),
},
defaultAdapter: "memory",
});
OptionalslowCallTime: ITimeSpanOptionaltrigger: CircuitBreakerTriggerimport { CircuitBreakerProviderFactory } from "@daiso-tech/core/circuit-breaker";
import { MemoryCircuitBreakerStorageAdapter } from "@daiso-tech/core/circuit-breaker/memory-circuit-breaker-storate-adapter";
import { DatabaseCircuitBreakerAdapter } from "@daiso-tech/core/circuit-breaker/database-circuit-breaker-adapter";
import { RedisCircuitBreakerAdapter } from "@daiso-tech/core/circuit-breaker/redis-circuit-breaker-adapter";
import { Serde } from "@daiso-tech/core/serde";
import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/super-json-serde-adapter";
import Redis from "ioredis"
const serde = new Serde(new SuperJsonSerdeAdapter());
const circuitBreakerProviderFactory = new CircuitBreakerProviderFactory({
serde,
adapters: {
memory: new DatabaseCircuitBreakerAdapter({
adapter: new MemoryCircuitBreakerStorageAdapter()
}),
redis: new RedisCircuitBreakerAdapter({
database: new Redis("YOUR_REDIS_CONNECTION")
}),
},
defaultAdapter: "memory",
});
// Will apply circuit breaker logic the default adapter which is MemoryCircuitBreakerStorageAdapter
await circuitBreakerProviderFactory
.use()
.create("a")
.runOrFail(async () => {
// ... code to apply circuit breaker logic
});
// Will apply circuit breaker logic the default adapter which is RedisCircuitBreakerAdapter
await circuitBreakerProviderFactory
.use("redis")
.create("a")
.runOrFail(async () => {
// ... code to apply circuit breaker logic
});
The
CircuitBreakerProviderFactoryclass is immutable.IMPORT_PATH:
"@daiso-tech/core/circuit-breaker"