BeatCli class

Shared setup for a bin/beat.dart entrypoint — parses the standard gisila_queue beat flags, builds a Redis-backed GisilaQueue and a Beat wired with a RedisBeatLock + RedisBeatStateStore (so running two by accident doesn't double-fire everything), and wires graceful shutdown:

Future<void> main(List<String> argv) async {
  final cli = BeatCli.parse(argv);
  if (cli.help) return print(cli.usage);
  final app = cli.buildApp();
  final beat = cli.buildBeat(app)
    ..schedule('cleanup', 'tasks.cleanup', Schedule.every(Duration(minutes: 5)));
  await cli.run(beat);
}

Recognized flags: --redis-host=H (default: localhost), --redis-port=P (default: 6379), --namespace=P (alias --prefix; default: gq), --tick-interval=SECONDS (default: 1), --lock-ttl=SECONDS (default: 30), --loglevel=debug|info|warning|error (default: info), --help/-h.

Constructors

BeatCli.parse(List<String> argv)
factory

Properties

args → CliArgs
final
hashCode → int
The hash code for this object.
no setterinherited
help → bool
no setter
lockTtl → Duration
final
logLevel → LogLevel
final
prefix → String
final
redisHost → String
final
redisOptions → RedisOptions
Password, TLS and database from --redis-url / REDIS_URL.
final
redisPort → int
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
tickInterval → Duration
final

Methods

buildApp() → GisilaQueue
Builds a Redis-backed GisilaQueue from the parsed flags. Only the broker is actually used by Beat (it just enqueues); a backend is included anyway so any tasks defined on the same app can be sent synchronously for testing without a separate producer process.
buildBeat(GisilaQueue app) → Beat
Builds a Beat for app, wired with a Redis leader lock and persisted last-run state so a second beat process started by accident sits idle instead of double-firing every entry. Register your periodic entries on the result before calling run.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
run(Beat beat) → Future<void>
Starts beat, prints a startup banner, and blocks until a SIGINT/SIGTERM triggers a graceful Beat.stop. Also closes beat's app connections before returning, so the process actually exits instead of hanging on an open Redis socket (Beat.stop already closes the lock/state-store connections it owns).
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited

Constants

usage → const String