mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-30 14:38:12 +00:00
24 lines
1.2 KiB
TypeScript
24 lines
1.2 KiB
TypeScript
import { registerAs } from "@nestjs/config";
|
|
|
|
/**
|
|
* RabbitMQ connection for the outbox event publisher (payment -> apps).
|
|
* `publisherTransport` selects which PaymentEventPublisher the outbox relay uses:
|
|
* "rabbitmq" -> RabbitMqPaymentEventPublisher (publish to the payment.events exchange) [DEFAULT]
|
|
* "http" -> HttpPaymentEventPublisher (POST to each app's mark-paid endpoint) [rollback]
|
|
* RabbitMQ is the default; set PUBLISHER_TRANSPORT=http explicitly to fall back to HTTP.
|
|
*/
|
|
export default registerAs("rabbitmq", () => ({
|
|
url: process.env.PAYMENT_RABBITMQ_URL ?? "amqp://localhost:5672/payment",
|
|
publisherTransport: (process.env.PUBLISHER_TRANSPORT ?? "rabbitmq").toLowerCase(),
|
|
/** Publish is failed (so the relay retries) if the broker does not confirm within this. */
|
|
publishTimeoutMs: parseInt(process.env.PAYMENT_PUBLISH_TIMEOUT_MS ?? "10000", 10),
|
|
}));
|
|
|
|
/**
|
|
* True when the outbox relay should publish to RabbitMQ rather than POST over HTTP.
|
|
* RabbitMQ is the default; only an explicit PUBLISHER_TRANSPORT=http opts out.
|
|
*/
|
|
export function isRabbitPublisher(): boolean {
|
|
return (process.env.PUBLISHER_TRANSPORT ?? "rabbitmq").toLowerCase() !== "http";
|
|
}
|