💔 Breaking change:
- 🔨 Some drivers now use a new
config
key to handle local configuration. Involved plugins and drivers: - plugins:
broadcast
,kv
- drivers:
memory
,redis
,memcached
,boltdb
.
Old style:
broadcast:
default:
driver: memory
interval: 1
New style:
broadcast:
default:
driver: memory
config: {} <--------------- NEW
kv:
memory-rr:
driver: memory
config: <--------------- NEW
interval: 1
kv:
memcached-rr:
driver: memcached
config: <--------------- NEW
addr:
- "127.0.0.1:11211"
broadcast:
default:
driver: redis
config: <------------------ NEW
addrs:
- "127.0.0.1:6379"
👀 New:
- ✏️ [BETA] GRPC plugin update to v2.
- ✏️ Roadrunner-plugins repository. This is the new home for the roadrunner plugins with documentation, configuration samples, and common problems.
- ✏️ [BETA] Let's Encrypt support. RR now can obtain an SSL certificate/PK for your domain automatically. Here is the new configuration:
ssl:
# Host and port to listen on (eg.: `127.0.0.1:443`).
#
# Default: ":443"
address: "127.0.0.1:443"
# Use ACME certificates provider (Let's encrypt)
acme:
# Directory to use as a certificate/pk, account info storage
#
# Optional. Default: rr_cache
certs_dir: rr_le_certs
# User email
#
# Used to create LE account. Mandatory. Error on empty.
email: you-email-here@email
# Alternate port for the http challenge. Challenge traffic should be redirected to this port if overridden.
#
# Optional. Default: 80
alt_http_port: 80,
# Alternate port for the tls-alpn-01 challenge. Challenge traffic should be redirected to this port if overridden.
#
# Optional. Default: 443.
alt_tlsalpn_port: 443,
# Challenge types
#
# Optional. Default: http-01. Possible values: http-01, tlsalpn-01
challenge_type: http-01
# Use production or staging endpoints. NOTE, try to use the staging endpoint (`use_production_endpoint`: `false`) to make sure, that everything works correctly.
#
# Optional, but for production should be set to true. Default: false
use_production_endpoint: true
# List of your domains to obtain certificates
#
# Mandatory. Error on empty.
domains: [
"your-cool-domain.here",
"your-second-domain.here"
]
- ✏️ Add a new option to the
logs
plugin to configure the line ending. By default, used\n
.
New option:
# Logs plugin settings
logs:
(....)
# Line ending
#
# Default: "\n".
line_ending: "\n"
- ✏️ HTTP Access log support at the
Info
log level.
http:
address: 127.0.0.1:55555
max_request_size: 1024
access_logs: true <-------- Access Logs ON/OFF
middleware: []
pool:
num_workers: 2
max_jobs: 0
allocate_timeout: 60s
destroy_timeout: 60s
- ✏️ HTTP middleware to handle
X-Sendfile
header.
Middleware reads the file in 10MB chunks. So, for example for the 5Gb file, only 10MB of RSS will be used. If the file size is smaller than 10MB, the middleware fits the buffer to the file size.
http:
address: 127.0.0.1:44444
max_request_size: 1024
middleware: ["sendfile"] <----- NEW MIDDLEWARE
pool:
num_workers: 2
max_jobs: 0
allocate_timeout: 60s
destroy_timeout: 60s
- ✏️ Service plugin now supports env variables passing to the script/executable/binary/any like in the
server
plugin:
service:
some_service_1:
command: "php test_files/loop_env.php"
process_num: 1
exec_timeout: 5s # s,m,h (seconds, minutes, hours)
remain_after_exit: true
env: <----------------- NEW
foo: "BAR"
restart_sec: 1
- ✏️ Server plugin can accept scripts (sh, bash, etc) in it's
command
configuration key:
server:
command: "./script.sh OR sh script.sh" <--- UPDATED
relay: "pipes"
relay_timeout: "20s"
The script should start a worker as the last command. For the pipes
, scripts should not contain programs, which can close stdin
, stdout
or stderr
.
- ✏️ Nats jobs driver support - PR.
nats:
addr: "demo.nats.io"
jobs:
num_pollers: 10
pipeline_size: 100000
pool:
num_workers: 10
max_jobs: 0
allocate_timeout: 60s
destroy_timeout: 60s
pipelines:
test-1:
driver: nats
prefetch: 100
subject: "default"
stream: "foo"
deliver_new: "true"
rate_limit: 100
delete_stream_on_stop: false
delete_after_ack: false
priority: 2
consume: [ "test-1" ]
-
Driver uses NATS JetStream API and is not compatible with non-js API.
-
✏️ Response API for the NATS, RabbitMQ, SQS and Beanstalk drivers. This means, that you'll be able to respond to a specified in the response queue.
Limitations:- To send a response to the queue maintained by the RR, you should send it as a
Job
type. There are no limitations for the responses into the other queues (tubes, subjects). - Driver uses the same endpoint (address) to send the response as specified in the configuration.
- To send a response to the queue maintained by the RR, you should send it as a
🩹 Fixes:
- 🐛 Fix: local and global configuration parsing.
- 🐛 Fix:
boltdb-jobs
connection left open after RPC close command. - 🐛 Fix: close
beanstalk
connection and release associated resources after pipeline stopped. - 🐛 Fix: grpc plugin fails to handle requests after calling
reset
. - 🐛 Fix: superfluous response.WriteHeader call when connection is broken.
📦 Packages:
- 📦 roadrunner
v2.5.0
- 📦 roadrunner-plugins
v2.5.0
- 📦 roadrunner-temporal
v1.0.10
- 📦 endure
v1.0.6
- 📦 goridge
v3.2.3