Skip to main content

Deployment & Config

Application properties

All keys live in admin-api/application.properties and are env-overridable. The SQS queue and the distribution topic default to sandbox; prod overrides them.

PropertyDefaultPurpose
channex.webhook.base-url(blank)Public host for the booking webhook; blank ⇒ webhook not registered
channex.feed.poll-interval-ms900000 (15 min)Revision feed backstop interval
channex.feed.poll-initial-delay-ms60000Delay before the first poll
channex.sqs.enabledtrueEvent-driven ARI consumer (set false locally / where there's no SQS)
channex.sqs.queue-namechannex-ari-fanout-sandboxSQS queue to consume (batch listener, ack-on-success)
channex.rate-limit.per-minute20ARI message rate cap (Channex limit)
channex.retry.max-attempts4Retries on 429 / 5xx with exponential backoff
channex.retry.base-backoff-ms500Base backoff between retries
channex.ari.max-batch4000Max ARI entries per request (after range compression)
channex.drift.enabledfalsePeriodic full-push drift correction
channex.drift.cron0 0 3 * * * (nightly, off-peak)Full-sync schedule — at most once/24h per certification
channex.booking.auto-applytrueMap ingested OTA bookings into PMS bookings
distribution.events.topic-arn…:distribution-events-sandboxSNS topic the publisher emits to

Scheduling: admin-api did not previously enable @Scheduled; the Channex config enables it (for the feed poller / drift / debounce flush). This also activates the other scheduled jobs in admin-api. If you run multiple replicas, add leader election before relying on exactly-once scheduled execution.

Per-environment overrides

EnvCHANNEX_SQS_ENABLEDCHANNEX_SQS_QUEUE_NAMEDISTRIBUTION_EVENTS_TOPIC_ARN
sandbox / qa(default true)(default sandbox)(default sandbox)
prod(default true)channex-ari-fanout-prod…:distribution-events-prod
localCHANNEX_SQS_ENABLED=falsen/an/a

AWS infrastructure (ap-south-1)

Event-driven outbound uses env-isolated SNS topics so sandbox and prod never cross-talk:

distribution-events-prod      → distribution-partner-fanout, channex-ari-fanout-prod
distribution-events-sandbox → channex-ari-fanout-sandbox
  • SQS queues channex-ari-fanout-{prod,sandbox}, each with a -dlq (redrive maxReceiveCount 5) and a queue policy allowing its env topic to SendMessage; subscriptions use raw message delivery.
  • The ECS task role (ecsTaskExecutionRole) has an inline policy channex-ari-fanout-access granting consume on the queues.
  • Cutover: set DISTRIBUTION_EVENTS_TOPIC_ARN per env so each publisher emits to its own topic. Until prod cuts over, the legacy distribution-events topic still feeds the partner fanout (which is also subscribed to the prod topic, so there is no interruption).

Per-channel credentials

Stored in channels.channel_config (JSONB): channexApiKey, channexEnvironment, channexGroupId, channexWebhookSecret. See the Overview.