Enqueue

Puts a batch of tasks into the queue.

Optional parameters keepalive_timeout_in_seconds, expires_at, and retry_strategy override corresponding values from the queue. That means each task can have individual retry strategy within the queue.

A task can be scheduled into the future by specifying scheduled_at timestamp (Unix time in nanoseconds). If it is set to 0 it will default to now and the task will be available for dequeing immediately.

Unique tasks are deduplicated by optional dedupe_key. If it is set then Moab will make sure there is only a single copy of a task with a given key in the queue. overwrite_on_duplicate specifies what to do with the duplicate. If it is empty, then the duplicate will be simply skipped. Fields listed in overwrite_on_duplicate will be overwritten on the original task with new values from the duplicate task. overwrite_on_duplicate can be set only if dedupe_key is set.

Note: This method is eventually consistent. Queues definitions are cached to reduce the load on control plane. So any change made by UpdateQueue, such as changing default keepalive timeout, will be reflected here after about 10 seconds.

Response is a list of tasks actually enqueued or modified. Each task has an id which can be used to track task status (with GetTask) or to delete a task before it is dequeued. Tasks without dedupe_key will be enqueued and returned in the response. Deduplicated (without overwrite_on_duplicate) tasks will be skipped and not returned in the response. Deduplicated (with some overwrite_on_duplicate set) tasks will be modified and returned in the response.

Request:

{
  "entries": [
    {
      "payload": "{\"user_id\": 123, \"event_type\": \"updated\"}",
      "scheduled_at": 0,
      "expires_at": 0,
      "dedupe_key": "unique_key_123",
      "keepalive_timeout_in_seconds": 60,
      "retry_strategy": {
      },
      "overwrite_on_duplicate": []
    }
  ],
  "queue_name": "MyQueue1"
}

Response:

{
  "tasks": [
    {
      "id": "tsk_ISfFsVup2QS",
      "queue_name": "MyQueue1",
      "payload": "{\"user_id\": 123, \"event_type\": \"updated\"}",
      "created_at": 1695826539671432000,
      "scheduled_at": 1695826539671432000,
      "expires_at": 1695866639671432000,
      "dedupe_key": "unique_key_123",
      "attempts": 1
    }
  ]
}

EnqueueRequest

Parameter Type
queue_name String Required, max 128 chars, /[-_0-9a-zA-Z]*/
entries EnqueueRequestEntry[] Required, between [1; 10] entries

EnqueueRequestEntry

Parameter Type
payload String Optional, max 64kb
scheduled_at Integer Optional, default 0
expires_at Integer Optional, default 0
dedupe_key String Optional, max 256 characters, default empty
keepalive_timeout_in_seconds Integer Optional, default 0
retry_strategy RetryStrategy Optional
overwrite_on_duplicate OverwriteOnDuplicate