summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolai Cornelis <[email protected]>2024-10-24 01:44:38 +0200
committerNicolai Cornelis <[email protected]>2024-10-24 01:44:38 +0200
commitf4005c2823de87d8423eee3357656c4ca77f648c (patch)
treeecb17b79b44b3935655eddc8be49d4874a21ac19
parente3b14d12793c24c7e8f07c5d17560f27d5f4ccf3 (diff)
Update schema to complete reference circle
-rw-r--r--schemas/config/3.0.schema.json1022
1 files changed, 12 insertions, 1010 deletions
diff --git a/schemas/config/3.0.schema.json b/schemas/config/3.0.schema.json
index 28f104be..5aa94a83 100644
--- a/schemas/config/3.0.schema.json
+++ b/schemas/config/3.0.schema.json
@@ -1,13 +1,14 @@
{
+ "$id": "https://raw.githubusercontent.com/roadrunner-server/roadrunner/refs/heads/master/schemas/config/3.0.schema.json",
"$schema": "https://json-schema.org/draft/2019-09/schema",
- "title": "Roadrunner config file schema version 3",
- "description": "Roadrunner config file schema version 3",
+ "title": "RoadRunner Main Configuration File",
+ "description": "This is your main RoadRunner configuration file. It contains all the plugins you want to load and their configuration.",
"type": "object",
"additionalProperties": true,
"minProperties": 1,
"properties": {
"version": {
- "description": "configuration version",
+ "description": "RoadRunner configuration file version.",
"type": "string",
"default": "3",
"enum": [
@@ -412,7 +413,7 @@
]
},
"config": {
- "description": "You may override the global configuration of the driver. If omitted, the global configuration for the selected driver will be used.",
+ "description": "You may override the global configuration of the driver. If you provided a global configuration for the plugin, this section can be omitted and the global configuration will be used instead. If neither are present, the KV storage will not load.",
"type": "object"
}
},
@@ -428,24 +429,7 @@
"then": {
"properties": {
"config": {
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "file": true,
- "permissions": true,
- "prefetch": {
- "$ref": "#/definitions/PipelineProperties/prefetch"
- },
- "priority": {
- "$ref": "#/definitions/PipelineProperties/priority"
- },
- "interval": {
- "description": "TTL keys check interval in seconds. It's safe to use 1 second here, but can be a little costly to performance.",
- "type": "integer",
- "minimum": 1,
- "default": 60
- }
- }
+ "$ref": "https://raw.githubusercontent.com/roadrunner-server/boltdb/refs/heads/master/schema.json#/definitions/driver"
}
}
},
@@ -1208,963 +1192,22 @@
}
},
"nats": {
- "description": "NATS jobs driver.",
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "addr": {
- "description": "NATS server address.",
- "type": "string",
- "default": "demo.nats.io"
- }
- }
+ "$ref": "https://raw.githubusercontent.com/roadrunner-server/nats/refs/heads/master/schema.json#/definitions/driver"
},
"kafka": {
- "description": "Kafka jobs driver",
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "brokers": {
- "description": "Kafka broker addresses.",
- "type": "array",
- "items": {
- "type": "string",
- "enum": [
- "127.0.0.1:9092",
- "127.0.0.1:9002"
- ]
- }
- },
- "tls": {
- "description": "Kafka TLS configuration",
- "type": "object",
- "properties": {
- "key": {
- "$ref": "#/definitions/TLSKeyFile"
- },
- "cert": {
- "$ref": "#/definitions/TLSCertFile"
- },
- "root_ca": {
- "$ref": "#/definitions/TLSCAFile"
- },
- "client_auth_type": {
- "$ref": "#/definitions/TLSClientAuthType"
- }
- },
- "required": [
- "key",
- "cert"
- ]
- },
- "sasl": {
- "type": "object",
- "description": "Mechanism used for the authentication",
- "properties": {
- "mechanism": {
- "description": "Mechanism used for the authentication.",
- "type": "string",
- "enum": [
- "aws_msk_iam",
- "plain",
- "SCRAM-SHA-256",
- "SCRAM-SHA-512"
- ]
- },
- "username": {
- "description": "Username for authentication",
- "type": "string",
- "default": null
- },
- "password": {
- "description": "Password for authentication",
- "type": "string",
- "default": null
- },
- "nonce": {
- "description": "Optional for the SHA auth types. Empty by default",
- "type": "string",
- "default": null
- },
- "is_token": {
- "description": "If true, suffixes the tokenauth=true extra attribute to the initial authentication message. Set this to true if the user and pass are from a delegation token. Optional for the SHA auth types. Empty by default",
- "type": "boolean",
- "default": false
- },
- "zid": {
- "description": "Zid is an optional authorization ID to use in authenticating",
- "type": "string",
- "default": null
- },
- "access_key": {
- "description": "AWS Access key ID",
- "type": "string",
- "default": null
- },
- "secret_key": {
- "description": "AWS Secret Access key ID",
- "type": "string",
- "default": null
- },
- "session_token": {
- "description": "SessionToken, if non-empty, is a session / security token to use for authentication. See the following link for more details: https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html",
- "type": "string",
- "default": null
- },
- "user_agent": {
- "description": "UserAgent is the user agent to for the client to use when connecting to Kafka, overriding the default franz-go/<runtime.Version()>/<hostname>. Setting a UserAgent allows authorizing based on the aws:UserAgent condition key; see the following link for more details: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-useragent",
- "type": "string",
- "default": null
- }
- }
- }
- }
+ "$ref": "https://raw.githubusercontent.com/roadrunner-server/kafka/refs/heads/master/schema.json#/definitions/driver"
},
"amqp": {
- "description": "AMQP jobs driver",
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "addr": {
- "description": "AMQP URI to connect to the rabbitmq server. See https://www.rabbitmq.com/uri-spec.html",
- "type": "string",
- "default": "amqp://guest:[email protected]:5672"
- },
- "tls": {
- "type": "object",
- "description": "",
- "properties": {
- "key": {
- "$ref": "#/definitions/TLSKeyFile"
- },
- "cert": {
- "$ref": "#/definitions/TLSCertFile"
- },
- "root_ca": {
- "$ref": "#/definitions/TLSCAFile"
- },
- "client_auth_type": {
- "$ref": "#/definitions/TLSClientAuthType"
- }
- },
- "required": [
- "key",
- "cert"
- ]
- }
- }
+ "$ref": "https://raw.githubusercontent.com/roadrunner-server/amqp/refs/heads/master/schema.json#/definitions/driver"
},
"beanstalk": {
- "description": "Beanstalk jobs driver",
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "addr": {
- "description": "Beanstalk server address",
- "type": "string",
- "default": "tcp://127.0.0.1:11300"
- },
- "timeout": {
- "description": "Beanstalk connect timeout",
- "type": "string",
- "$ref": "#/definitions/Duration",
- "default": "30s"
- }
- }
+ "$ref": "https://raw.githubusercontent.com/roadrunner-server/beanstalk/refs/heads/master/schema.json#/definitions/driver"
},
"sqs": {
- "description": "SQS jobs driver (https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html)",
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "key": {
- "title": "AWS Access Key ID",
- "description": "This is required unless your environment variables provide AWS credentials or you use a self-hosted queue.",
- "type": "string",
- "examples": [
- "ASIAIOSFODNN7EXAMPLE"
- ]
- },
- "secret": {
- "title": "AWS Access Key Secret",
- "description": "This is required unless your environment variables provide AWS credentials or you use a self-hosted queue.",
- "type": "string",
- "examples": [
- "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
- ]
- },
- "region": {
- "title": "AWS Region",
- "description": "The region to connect to. Must be one of the [supported regions](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-available-regions). This is required unless your environment variables provide an AWS region or you use a self-hosted queue.",
- "type": "string",
- "examples": [
- "eu-central-1",
- "us-west-1",
- "ca-central-1",
- "ap-northeast-1"
- ]
- },
- "session_token": {
- "title": "AWS Session Token",
- "description": "The short-lived session token to use. This should not be provided for production and has a maximum duration of 12 hours. In most cases, you don't need to provide this value.",
- "type": "string"
- },
- "endpoint": {
- "title": "Queue Endpoint",
- "description": "The endpoint of your queue. You only need to provide this value if you use a self-hosted queue, as the endpoint will be resolved from the provided AWS Region and queue name otherwise.",
- "type": "string",
- "examples": [
- "http://127.0.0.1:9324"
- ]
- }
- },
- "dependentRequired": {
- "cert": [
- "secret"
- ],
- "secret": [
- "key"
- ]
- }
+ "$ref": "https://raw.githubusercontent.com/roadrunner-server/sqs/refs/heads/master/schema.json#/definitions/driver"
},
"jobs": {
- "description": "Jobs plugin",
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "num_pollers": {
- "description": "Number of threads which will try to obtain jobs from the priority queue. Default is the number of workers+1.",
- "type": "integer",
- "minimum": 1,
- "examples": [
- 10,
- 32
- ]
- },
- "timeout": {
- "description": "Request timeout (in seconds) when attempting to send jobs to the queue.",
- "type": "integer",
- "default": 60
- },
- "pipeline_size": {
- "description": "Size of the internal priority queue. If the internal priority queue is full, you cannot send (push) additional jobs to the queue. If you set this value to zero, it defaults to 1 million.",
- "type": "integer",
- "default": 1000000,
- "minimum": 0
- },
- "consume": {
- "description": "A list of pipelines to be consumed by the server automatically when starting. You can omit this list if you want to start consuming manually. Each key in this list must be defined under `pipelines` as a consumer.",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "pool": {
- "description": "JOBS workers pool",
- "type": "object",
- "$ref": "#/definitions/WorkersPool"
- },
- "pipelines": {
- "description": "List of broker pipelines associated with the configured drivers. This option is not required since you can declare pipelines at runtime. The selected pipeline `driver` must be configured in the root of your configuration file.",
- "type": "object",
- "patternProperties": {
- "^[a-zA-Z0-9._-]+$": {
- "additionalProperties": false,
- "type": "object",
- "required": [
- "driver"
- ],
- "properties": {
- "driver": {
- "type": "string",
- "description": "The driver to use for the pipeline.",
- "enum": [
- "amqp",
- "beanstalk",
- "boltdb",
- "kafka",
- "memory",
- "nats",
- "sqs"
- ]
- },
- "config": {
- "type": "object"
- }
- },
- "if": {
- "properties": {
- "driver": {
- "enum": [
- "amqp"
- ]
- }
- }
- },
- "then": {
- "properties": {
- "config": {
- "type": "object",
- "additionalProperties": false,
- "description": "Configuration for the AMQP driver.",
- "properties": {
- "priority": {
- "$ref": "#/definitions/PipelineProperties/priority"
- },
- "prefetch": {
- "$ref": "#/definitions/PipelineProperties/prefetch"
- },
- "consume_all": {
- "$ref": "#/definitions/PipelineProperties/consume_all"
- },
- "delete_queue_on_stop": {
- "type": "boolean",
- "default": false,
- "description": "Delete the queue when stopping the pipeline."
- },
- "queue": {
- "$ref": "#/definitions/PipelineProperties/queue"
- },
- "exchange": {
- "description": "Exchange name",
- "type": "string",
- "default": "amqp.default"
- },
- "redial_timeout": {
- "description": "Redial timeout (in seconds). How long to try to reconnect to the AMQP server",
- "type": "integer",
- "default": 60
- },
- "exchange_durable": {
- "description": "Durable exchange (rabbitmq option: https://www.rabbitmq.com/tutorials/amqp-concepts.html#exchanges)",
- "type": "boolean",
- "default": false
- },
- "durable": {
- "type": "boolean",
- "default": false,
- "description": "Whether the queue is durable."
- },
- "consumer_id": {
- "description": "The consumer_id is identified by a string that is unique and scoped for all consumers on this channel",
- "type": "string",
- "default": "roadrunner+uuid"
- },
- "exchange_auto_delete": {
- "description": "Auto-delete (exchange is deleted when last queue is unbound from it): https://www.rabbitmq.com/tutorials/amqp-concepts.html#exchanges",
- "type": "boolean",
- "default": false
- },
- "queue_auto_delete": {
- "description": "Auto-delete (queue that has had at least one consumer is deleted when last consumer unsubscribes)",
- "type": "boolean",
- "default": false
- },
- "exchange_type": {
- "description": "Exchange type",
- "type": "string",
- "default": "direct"
- },
- "routing_key": {
- "description": "Routing key for the queue",
- "type": "string",
- "default": null
- },
- "exclusive": {
- "description": "Declare a queue exclusive at the exchange",
- "type": "boolean",
- "default": false
- },
- "multiple_ack": {
- "description": "When multiple is true, this delivery and all prior unacknowledged deliveries on the same channel will be acknowledged. This is useful for batch processing of deliveries",
- "type": "boolean",
- "default": false
- },
- "requeue_on_fail": {
- "description": "Use rabbitmq mechanism to requeue the job on fail",
- "type": "boolean",
- "default": false
- },
- "queue_headers": {
- "description": "Queue declare args, associated array (hashmap, key:val)",
- "$ref": "#/definitions/HashmapString",
- "default": null
- }
- }
- }
- }
- },
- "else": {
- "if": {
- "properties": {
- "driver": {
- "enum": [
- "beanstalk"
- ]
- }
- }
- },
- "then": {
- "properties": {
- "config": {
- "type": "object",
- "description": "Configuration for the Beanstalk driver.",
- "additionalProperties": false,
- "properties": {
- "priority": {
- "$ref": "#/definitions/PipelineProperties/priority"
- },
- "prefetch": {
- "$ref": "#/definitions/PipelineProperties/prefetch"
- },
- "consume_all": {
- "$ref": "#/definitions/PipelineProperties/consume_all"
- },
- "tube_priority": {
- "description": "Beanstalk internal tube priority",
- "type": "integer",
- "default": 1
- },
- "tube": {
- "description": "Tube name",
- "type": "string",
- "default": "default"
- },
- "reserve_timeout": {
- "description": "If no job is available before this timeout has passed, Reserve returns a ConnError recording ErrTimeout",
- "$ref": "#/definitions/Duration",
- "default": "5s"
- }
- }
- }
- }
- },
- "else": {
- "if": {
- "properties": {
- "driver": {
- "enum": [
- "boltdb"
- ]
- }
- }
- },
- "then": {
- "properties": {
- "config": {
- "type": "object",
- "description": "Configuration for the BoltDB driver.",
- "additionalProperties": false,
- "properties": {
- "priority": {
- "$ref": "#/definitions/PipelineProperties/priority"
- },
- "prefetch": {
- "$ref": "#/definitions/PipelineProperties/prefetch"
- },
- "permissions": {
- "$ref": "#/definitions/DatabaseProperties/BoltDB/permissions"
- },
- "file": {
- "$ref": "#/definitions/DatabaseProperties/BoltDB/file"
- }
- }
- }
- }
- },
- "else": {
- "if": {
- "properties": {
- "driver": {
- "enum": [
- "kafka"
- ]
- }
- }
- },
- "then": {
- "properties": {
- "config": {
- "type": "object",
- "description": "Configuration for Kafka driver.",
- "additionalProperties": false,
- "properties": {
- "priority": {
- "$ref": "#/definitions/PipelineProperties/priority"
- },
- "auto_create_topics_enable": {
- "description": "Auto create topic for the consumer/producer",
- "type": "boolean",
- "default": false
- },
- "producer_options": {
- "description": "Kafka producer options",
- "type": "object",
- "properties": {
- "disable_idempotent": {
- "description": "Disable_idempotent disables idempotent produce requests, opting out of Kafka server-side deduplication in the face of reissued requests due to transient network problems. Idempotent production is strictly a win, but does require the IDEMPOTENT_WRITE permission on CLUSTER (pre Kafka 3.0), and not all clients can have that permission.",
- "type": "boolean",
- "default": false
- },
- "required_acks": {
- "description": "Sets the required acks for produced records",
- "type": "string",
- "default": "AllISRAcks",
- "enum": [
- "NoAck",
- "LeaderAck",
- "AllISRAck"
- ]
- },
- "max_message_bytes": {
- "type": "integer",
- "default": 1000012,
- "minimum": 0
- },
- "request_timeout": {
- "description": "The maximum duration in seconds the broker will wait the receipt of the number of required_acks.",
- "$ref": "#/definitions/Duration"
- },
- "compression_codec": {
- "type": "string",
- "default": "none",
- "enum": [
- "none",
- "gzip",
- "snappy",
- "lz4",
- "zstd"
- ]
- },
- "delivery_timeout": {
- "description": "A rough duration of how long a record can sit around in a batch before timing out, overriding the unlimited default.",
- "$ref": "#/definitions/Duration"
- },
- "transaction_timeout": {
- "description": "The allowed duration for a transaction. It is a good idea to keep this less than a group's session timeout.",
- "$ref": "#/definitions/Duration"
- }
- }
- },
- "group_options": {
- "type": "object",
- "description": "group_options sets the consumer group for the client to join and consume in. This option is required if using any other group options.",
- "properties": {
- "group_id": {
- "description": "Kafka group ID",
- "type": "string"
- },
- "block_rebalance_on_poll": {
- "description": "Switches the client to block rebalances whenever you poll",
- "type": "boolean",
- "default": false
- }
- }
- },
- "consumer_options": {
- "description": "Kafka consumer options",
- "type": "object",
- "properties": {
- "topics": {
- "description": "List of the topics to consume. Regex also supported.",
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "consume_regexp": {
- "description": "consume_regexp sets the client to parse all topics passed to `topics` as regular expressions. When consuming via regex, every metadata request loads *all* topics, so that all topics can be passed to any regular expressions. Every topic is evaluated only once ever across all regular expressions; either it permanently is known to match, or is permanently known to not match.",
- "type": "boolean",
- "default": false
- },
- "max_fetch_message_size": {
- "type": "integer",
- "default": 50000
- },
- "min_fetch_message_size": {
- "type": "integer",
- "default": 1
- },
- "consume_offset": {
- "description": "consumer_offset sets the offset to start consuming from, or if OffsetOutOfRange is seen while fetching, to restart consuming from.",
- "type": "object",
- "required": [
- "type"
- ],
- "properties": {
- "type": {
- "description": "Partition offset type",
- "type": "string",
- "enum": [
- "AtEnd",
- "At",
- "AfterMilli",
- "AtStart",
- "Relative",
- "WithEpoch"
- ]
- },
- "value": {
- "description": "Value for the: At, AfterMilli, Relative and WithEpoch offsets",
- "type": "integer",
- "default": 0
- }
- }
- },
- "consume_partitions": {
- "type": "object",
- "minProperties": 1,
- "patternProperties": {
- "^[a-zA-Z0-9._-]+$": {
- "description": "Topic to consume",
- "type": "object",
- "minProperties": 1,
- "patternProperties": {
- "^[0-9]+$": {
- "type": "object",
- "description": "Partition number.",
- "required": [
- "type"
- ],
- "properties": {
- "type": {
- "description": "Partition offset type",
- "type": "string",
- "enum": [
- "AtEnd",
- "At",
- "AfterMilli",
- "AtStart",
- "Relative",
- "WithEpoch"
- ]
- },
- "value": {
- "description": "Value for the: At, AfterMilli, Relative and WithEpoch offsets",
- "type": "integer",
- "default": 0
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "else": {
- "if": {
- "properties": {
- "driver": {
- "enum": [
- "memory"
- ]
- }
- }
- },
- "then": {
- "properties": {
- "config": {
- "type": "object",
- "description": "Configuration for the in-memory driver.",
- "additionalProperties": false,
- "properties": {
- "priority": {
- "$ref": "#/definitions/PipelineProperties/priority"
- },
- "prefetch": {
- "$ref": "#/definitions/PipelineProperties/prefetch"
- }
- }
- }
- }
- },
- "else": {
- "if": {
- "properties": {
- "driver": {
- "enum": [
- "nats"
- ]
- }
- }
- },
- "then": {
- "properties": {
- "config": {
- "type": "object",
- "description": "Configuration for the NATS driver.",
- "additionalProperties": false,
- "properties": {
- "priority": {
- "$ref": "#/definitions/PipelineProperties/priority"
- },
- "prefetch": {
- "$ref": "#/definitions/PipelineProperties/prefetch"
- },
- "consume_all": {
- "$ref": "#/definitions/PipelineProperties/consume_all"
- },
- "subject": {
- "description": "NATS subject",
- "type": "string",
- "default": "default"
- },
- "stream": {
- "description": "NATS stream",
- "type": "string",
- "default": "default-stream"
- },
- "deliver_new": {
- "description": "Whether to only receive messages that were created after the consumer was created.",
- "type": "boolean",
- "default": false
- },
- "rate_limit": {
- "description": "Consumer rate-limiter in bytes. See https://docs.nats.io/jetstream/concepts/consumers#ratelimit",
- "type": "integer",
- "default": 1000,
- "minimum": 0
- },
- "delete_stream_on_stop": {
- "description": "Whether to delete the stream after the pipeline is stopped.",
- "type": "boolean",
- "default": false
- },
- "delete_after_ack": {
- "description": "Whether to delete messages from the stream after successful acknowledgement.",
- "type": "boolean",
- "default": false
- }
- }
- }
- }
- },
- "else": {
- "if": {
- "properties": {
- "driver": {
- "enum": [
- "sqs"
- ]
- }
- }
- },
- "then": {
- "properties": {
- "config": {
- "type": "object",
- "description": "Configuration for SQS driver.",
- "additionalProperties": false,
- "properties": {
- "priority": {
- "$ref": "#/definitions/PipelineProperties/priority"
- },
- "prefetch": {
- "$ref": "#/definitions/PipelineProperties/prefetch"
- },
- "skip_queue_declaration": {
- "description": "Whether to skip creation of the SQS queue. If you set to this to `true`, the queue must already exist.",
- "type": "boolean",
- "default": false
- },
- "consume_all": {
- "$ref": "#/definitions/PipelineProperties/consume_all"
- },
- "visibility_timeout": {
- "type": "integer",
- "description": "The duration (in seconds) that a message received from a queue (by one consumer) will not be visible to the other message consumers. The visibility timeout begins when Amazon SQS returns a message. If the consumer fails to process and delete the message before the visibility timeout expires, the message becomes visible to other consumers. If a message must be received only once, your consumer must delete it within the duration of the visibility timeout.",
- "default": 0
- },
- "error_visibility_timeout": {
- "type": "integer",
- "description": "The visibility timeout to set for jobs that fail (NACK). If you set this, you must also set `retain_failed_jobs` to `true`.",
- "default": 0
- },
- "retain_failed_jobs": {
- "type": "boolean",
- "description": "Whether to keep failed (NACK'ed) jobs on the queue. By default, RR will delete and requeue failed jobs immediately. If you set this to `true`, RR does nothing to NACK'ed jobs on the queue and they will be consumed again after `visibility_timeout` or (`error_visibility_timeout`, if > 0) has passed. Jobs that are consumed multiple times will increment their receive count, which can be used to configure SQS to automatically move the jobs to a dead-letter queue.",
- "default": false
- },
- "wait_time_seconds": {
- "description": "The duration (in seconds) the call waits for a message to arrive in the queue before returning. If a message is available, the call returns immediately. If no messages are available and the wait time expires, the call returns with an empty list of messages",
- "type": "integer",
- "default": 0,
- "maximum": 20
- },
- "queue": {
- "$ref": "#/definitions/PipelineProperties/queue"
- },
- "message_group_id": {
- "description": "Message Group ID. See https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html#SQS-SendMessage-request-MessageGroupId",
- "type": "string",
- "default": null
- },
- "attributes": {
- "title": "AWS queue attributes. Attributes are only applied to the queue if RR creates it. Existing queues will not be modified. Must be any of the attributes listed here: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html.",
- "type": "object",
- "properties": {
- "DelaySeconds": {
- "description": "The length of time, in seconds, for which the delivery of all messages in the queue is delayed.",
- "type": "integer",
- "minimum": 0,
- "maximum": 900,
- "default": 0
- },
- "MaximumMessageSize": {
- "description": "The limit of how many bytes a message can contain before Amazon SQS rejects it.",
- "type": "integer",
- "minimum": 1024,
- "maximum": 262144,
- "default": 262144
- },
- "MessageRetentionPeriod": {
- "description": "The length of time, in seconds, for which Amazon SQS retains a message. When you change a queue's attributes, the change can take up to 60 seconds for most of the attributes to propagate throughout the Amazon SQS system. Changes made to the `MessageRetentionPeriod` attribute can take up to 15 minutes and will impact existing messages in the queue potentially causing them to be expired and deleted if the `MessageRetentionPeriod` is reduced below the age of existing messages.",
- "type": "integer",
- "minimum": 60,
- "maximum": 1209600,
- "default": 345600
- },
- "Policy": {
- "description": "A valid AWS policy. See https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html for reference of this object structure."
- },
- "ReceiveMessageWaitTimeSeconds": {
- "description": "The length of time, in seconds, for which a [`ReceiveMessage`](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html) action waits for a message to arrive.",
- "type": "integer",
- "minimum": 0,
- "maximum": 20,
- "default": 0
- },
- "VisibilityTimeout": {
- "description": "The visibility timeout for the queue, in seconds. For more information about the visibility timeout, see [Visibility Timeout](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html) in the Amazon SQS Developer Guide.",
- "type": "integer",
- "minimum": 0,
- "maximum": 43200,
- "default": 30
- },
- "RedrivePolicy": {
- "description": "**Dead-letter queues only.** The parameters for the dead-letter queue functionality of the source queue as a JSON object.",
- "type": "object",
- "properties": {
- "deadLetterTargetArn": {
- "type": "string",
- "description": "The Amazon Resource Name (ARN) of the dead-letter queue to which Amazon SQS moves messages after the value of `maxReceiveCount` is exceeded.",
- "examples": [
- "arn:aws:sqs:us-east-2:123456789012:my_queue"
- ]
- },
- "maxReceiveCount": {
- "type": "integer",
- "description": "The number of times a message is delivered to the source queue before being moved to the dead-letter queue. When the `ReceiveCount` for a message exceeds the `maxReceiveCount` for a queue, Amazon SQS moves the message to the dead-letter-queue.",
- "minimum": 1,
- "default": 10
- }
- }
- },
- "RedriveAllowPolicy": {
- "description": "**Dead-letter queues only.** The parameters for the permissions for the dead-letter queue redrive permission and which source queues can specify dead-letter queues.",
- "type": "object",
- "properties": {
- "redrivePermission": {
- "description": "The permission type that defines which source queues can specify the current queue as the dead-letter queue.",
- "type": "string",
- "enum": [
- "allowAll",
- "denyAll",
- "byQueue"
- ]
- },
- "sourceQueueArns": {
- "description": "The Amazon Resource Names (ARN)s of the source queues that can specify this queue as the dead-letter queue and redrive messages. You can specify this parameter only when the `redrivePermission` parameter is set to `byQueue`. You can specify up to 10 source queue ARNs. To allow more than 10 source queues to specify dead-letter queues, set the `redrivePermission` parameter to `allowAll`.",
- "type": "array",
- "items": {
- "type": "string",
- "examples": [
- "arn:aws:sqs:us-east-2:123456789012:my_queue",
- "arn:aws:sqs:us-east-2:123456789012:my_queue2"
- ]
- }
- }
- }
- },
- "ContentBasedDeduplication": {
- "description": "**FIFO queues only.** Enables content-based deduplication. For more information, see [Exactly-once processing](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues-exactly-once-processing.html) in the Amazon SQS Developer Guide.",
- "type": "boolean",
- "default": false
- },
- "DeduplicationScope": {
- "description": "**High-throughput FIFO queues only.** Specifies whether message deduplication occurs at the message group or queue level.",
- "type": "string",
- "enum": [
- "messageGroup",
- "queue"
- ]
- },
- "FifoThroughputLimit": {
- "description": "**High-throughput FIFO queues only.** Specifies whether the FIFO queue throughput quota applies to the entire queue or per message group. The `perMessageGroupId` value is allowed only when the value for `DeduplicationScope` is `messageGroup`.",
- "type": "string",
- "enum": [
- "perQueue",
- "perMessageGroupId"
- ]
- },
- "KmsMasterKeyId": {
- "description": "**Applies only to server-side-encryption.** The ID of an AWS managed customer master key (CMK) for Amazon SQS or a custom CMK. While the alias of the AWS-managed CMK for Amazon SQS is always `alias/aws/sqs`, the alias of a custom CMK can, for example, be `alias/MyAlias`.",
- "type": "string"
- },
- "KmsDataKeyReusePeriodSeconds": {
- "description": "**Applies only to server-side-encryption.** The length of time, in seconds, for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS KMS again. An integer representing seconds, between 60 seconds (1 minute) and 86,400 seconds (24 hours).",
- "type": "integer",
- "minimum": 60,
- "maximum": 86400,
- "default": 300
- },
- "SqsManagedSseEnabled": {
- "type": "boolean",
- "default": false,
- "description": "**Applies only to server-side-encryption.** Enables server-side queue encryption using SQS owned encryption keys. Only one server-side encryption option is supported per queue."
- }
- }
- },
- "tags": {
- "title": "Tags to associate with the queue. Please see https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-queue-tags.html.",
- "type": "object",
- "additionalProperties": {
- "type": "string",
- "minLength": 1
- }
- }
- }
- }
- }
- },
- "else": {
- "if": {
- "properties": {
- "driver": {
- "enum": [
- "memory"
- ]
- }
- }
- },
- "then": true,
- "else": false
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
+ "$ref": "https://raw.githubusercontent.com/roadrunner-server/jobs/refs/heads/master/schema.json"
},
"tcp": {
"type": "object",
@@ -2430,31 +1473,6 @@
"require_and_verify_client_cert"
]
},
- "PipelineProperties": {
- "description": "Common configuration options applied to different queues.",
- "priority": {
- "description": "Pipeline priority. If the job pushed to the pipeline has priority set to 0, it will inherit the pipeline's priority.",
- "type": "integer",
- "minimum": 0,
- "default": 10
- },
- "prefetch": {
- "description": "Number of jobs to prefetch from the driver.",
- "type": "integer",
- "minimum": 0,
- "default": 100000
- },
- "consume_all": {
- "description": "Normally only jobs with a Jobs structure are consumed. Enable this to consume all jobs on the queue.",
- "type": "boolean",
- "default": false
- },
- "queue": {
- "type": "string",
- "description": "The name of the queue.",
- "default": "default"
- }
- },
"Redis": {
"type": "object",
"additionalProperties": false,
@@ -2859,22 +1877,6 @@
"type": "integer"
}
}
- },
- "DatabaseProperties": {
- "BoltDB": {
- "permissions": {
- "description": "Permissions for the BoltDB database file.",
- "type": "integer",
- "default": 755,
- "minimum": 0,
- "maximum": 777
- },
- "file": {
- "description": "BoltDB file to create or DB to use.",
- "type": "string",
- "default": "rr.db"
- }
- }
}
}
}