Exq (exq v0.19.0) View Source

Link to this section Summary

Functions

Enqueue a job immediately.

Schedule multiple jobs to be atomically enqueued at specific times

Schedule a job to be enqueued at a specific time in the future.

Schedule a job to be enqueued at in the future given by offset in seconds.

Callback implementation for Application.start/2.

Subscribe to a queue - ie. listen to queue for jobs

List all subscriptions(active queues)

Unsubscribe from a queue - ie. stop listening to queue for jobs

Unsubscribe from all queues - ie. stop listening for jobs

Link to this section Functions

Link to this function

child_spec(exq_options \\ [])

View Source
Link to this function

enqueue(pid, queue, worker, args)

View Source

Enqueue a job immediately.

Expected args:

  • pid - PID for Exq Manager or Enqueuer to handle this
  • queue - Name of queue to use
  • worker - Worker module to target
  • args - Array of args to send to worker
  • options: Following job options are supported
    • max_retries (integer) - max retry count
    • jid (string) - user supplied jid value
    • unique_for (integer) - lock expiration duration in seconds
    • unique_token (string) - unique lock token. By default the token is computed based on the queue, class and args.
    • unique_until (atom) - defaults to :success. Supported values are
      • :success - unlock on job success
      • :start - unlock on job first execution
      • :expiry - unlock when the lock is expired. Depends on unique_for value.

Returns:

  • {:ok, jid} if the job was enqueued successfully, with jid = Job ID.
  • {:error, reason} if there was an error enqueueing job
Link to this function

enqueue(pid, queue, worker, args, options)

View Source

Schedule multiple jobs to be atomically enqueued at specific times

Expected args:

  • pid - PID for Exq Manager or Enqueuer to handle this
  • jobs - List of jobs each defined as [queue, worker, args, options]
    • queue - Name of queue to use
    • worker - Worker module to target
    • args - Array of args to send to worker
    • options: Following job options are supported
      • max_retries (integer) - max retry count
      • jid (string) - user supplied jid value
      • unique_for (integer) - lock expiration duration in seconds
      • unique_token (string) - unique lock token. By default the token is computed based on the queue, class and args.
      • unique_until (atom) - defaults to :success. Supported values are
        • :success - unlock on job success
        • :start - unlock on job first execution
        • :expiry - unlock when the lock is expired. Depends on unique_for value.
      • schedule - (optional) - used to schedule the job for future. If not present, job will be enqueued immediately by default.
        • {:in, seconds_from_now}
        • {:at, datetime}
Link to this function

enqueue_at(pid, queue, time, worker, args)

View Source

Schedule a job to be enqueued at a specific time in the future.

Expected args:

  • pid - PID for Exq Manager or Enqueuer to handle this
  • queue - name of queue to use
  • time - Time to enqueue
  • worker - Worker module to target
  • args - Array of args to send to worker
  • options: Following job options are supported
    • max_retries (integer) - max retry count
    • jid (string) - user supplied jid value
    • unique_for (integer) - lock expiration duration in seconds
    • unique_token (string) - unique lock token. By default the token is computed based on the queue, class and args.
    • unique_until (atom) - defaults to :success. Supported values are
      • :success - unlock on job success
      • :start - unlock on job first execution
      • :expiry - unlock when the lock is expired. Depends on unique_for value.

If Exq is running in mode: [:enqueuer], then you will need to use the Enqueuer to schedule jobs, for example:

time = Timex.now() |> Timex.shift(days: 8)
Exq.Enqueuer.enqueue_at(Exq.Enqueuer, "default", time, MyWorker, ["foo"])
Link to this function

enqueue_at(pid, queue, time, worker, args, options)

View Source
Link to this function

enqueue_in(pid, queue, offset, worker, args)

View Source

Schedule a job to be enqueued at in the future given by offset in seconds.

Expected args:

  • pid - PID for Exq Manager or Enqueuer to handle this
  • queue - Name of queue to use
  • offset - Offset in seconds in the future to enqueue
  • worker - Worker module to target
  • args - Array of args to send to worker
  • options: Following job options are supported
    • max_retries (integer) - max retry count
    • jid (string) - user supplied jid value
    • unique_for (integer) - lock expiration duration in seconds
    • unique_token (string) - unique lock token. By default the token is computed based on the queue, class and args.
    • unique_until (atom) - defaults to :success. Supported values are
      • :success - unlock on job success
      • :start - unlock on job first execution
      • :expiry - unlock when the lock is expired. Depends on unique_for value.

If Exq is running in mode: [:enqueuer], then you will need to use the Enqueuer to schedule jobs, for example:

Exq.Enqueuer.enqueue_in(Exq.Enqueuer, "default", 5000, MyWorker, ["foo"])
Link to this function

enqueue_in(pid, queue, offset, worker, args, options)

View Source

Callback implementation for Application.start/2.

Subscribe to a queue - ie. listen to queue for jobs

  • pid - PID for Exq Manager or Enqueuer to handle this
  • queue - Name of queue
  • concurrency - Optional argument specifying max concurrency for queue
Link to this function

subscribe(pid, queue, concurrency)

View Source

List all subscriptions(active queues)

  • pid - PID for Exq Manager or Enqueuer to handle this

Unsubscribe from a queue - ie. stop listening to queue for jobs

  • pid - PID for Exq Manager or Enqueuer to handle this
  • queue - Name of queue

Unsubscribe from all queues - ie. stop listening for jobs

  • pid - PID for Exq Manager or Enqueuer to handle this
Link to this function

worker_job(name \\ nil, pid \\ self())

View Source

Get the job metadata

  • name - registered name of Exq. Only necessary if the custom name option is used when starting Exq. Defaults to Exq
  • pid - pid of the worker. Defaults to self().