ores.scheduler.service

Table of Contents

1. Diagram

ores.scheduler.service component diagram

Figure 1: ores.scheduler.service

2. Summary

ores.scheduler.service is the NATS service entrypoint for the scheduler domain. It reads configuration, opens database and NATS connections, starts the cron-based scheduler loop from ores.scheduler.core, registers all message handlers, and runs the event loop. All scheduling logic lives in ores.scheduler.core.

3. Inputs

  • Configuration file: NATS server URL, PostgreSQL connection string, and environment settings.
  • NATS request messages for job-definition and job-instance management.
  • System clock — the scheduler loop fires due jobs based on cron expressions.

4. Outputs

  • A running NATS service handling all scheduler management operations.
  • Periodic job executions (SQL, NATS-publish, MQ actions) fired on schedule.
  • NATS response messages returned to callers.
  • Structured logs via ores.logging.

5. Entry points

  • src/main.cpp — process entry point.
  • src/app/ — application bootstrap, starts the scheduler loop.
  • src/config/ — configuration parsing and validation.

6. Dependencies

  • ores.scheduler.core — all handlers, job-dispatch logic, and cron loop.
  • ores.scheduler.api — shared protocol types.
  • ores.logging — structured logging infrastructure.
  • nats.c — NATS client for connection management.

7. Build dependencies

What the shared profile cannot know, declared here rather than hand-edited into the generated build file. Each block is spliced into its generated file after the profile's baseline.

8. See also

9. Test dependencies

The suites link what the profile cannot know about.

target_link_libraries(${lib_target_name}
    PUBLIC
        ores.service.lib
        ores.security.lib
        ores.scheduler.core.lib
        ores.iam.client.lib
        ores.nats.lib
        ores.database.lib
        ores.utility.lib
        ores.telemetry.core.lib
    PRIVATE
        ores.eventing.api.lib
        ores.eventing.core.lib)
target_link_libraries(${tests_target_name}
    PRIVATE
        ${lib_target_name}
        ores.utility.lib
        ores.testing.lib
        ores.logging.lib
        Catch2::Catch2
        faker-cxx::faker-cxx
        Threads::Threads)

Emacs 29.3 (Org mode 9.6.15)