مراية لـ
https://github.com/postalserver/postal.git
تم المزامنة 2026-01-19 06:09:47 +00:00
fix(message-dequeuer): ability to disable batching
هذا الالتزام موجود في:
@@ -17,7 +17,7 @@ module MessageDequeuer
|
|||||||
# Process the original message and then all of those
|
# Process the original message and then all of those
|
||||||
# found for batching.
|
# found for batching.
|
||||||
process_message(@queued_message)
|
process_message(@queued_message)
|
||||||
@other_messages.each { |message| process_message(message) }
|
@other_messages&.each { |message| process_message(message) }
|
||||||
end
|
end
|
||||||
ensure
|
ensure
|
||||||
@state.finished
|
@state.finished
|
||||||
@@ -45,6 +45,8 @@ module MessageDequeuer
|
|||||||
end
|
end
|
||||||
|
|
||||||
def find_other_messages_for_batch
|
def find_other_messages_for_batch
|
||||||
|
return unless Postal::Config.postal.batch_queued_messages?
|
||||||
|
|
||||||
@other_messages = @queued_message.batchable_messages(100)
|
@other_messages = @queued_message.batchable_messages(100)
|
||||||
log "found #{@other_messages.size} associated messages to process at the same time", batch_key: @queued_message.batch_key
|
log "found #{@other_messages.size} associated messages to process at the same time", batch_key: @queued_message.batch_key
|
||||||
rescue StandardError
|
rescue StandardError
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ This document contains all the environment variables which are available for thi
|
|||||||
| `POSTAL_SMTP_RELAYS` | Array of strings | An array of SMTP relays in the format of smtp://host:port | [] |
|
| `POSTAL_SMTP_RELAYS` | Array of strings | An array of SMTP relays in the format of smtp://host:port | [] |
|
||||||
| `POSTAL_TRUSTED_PROXIES` | Array of strings | An array of IP addresses to trust for proxying requests to Postal (in addition to localhost addresses) | [] |
|
| `POSTAL_TRUSTED_PROXIES` | Array of strings | An array of IP addresses to trust for proxying requests to Postal (in addition to localhost addresses) | [] |
|
||||||
| `POSTAL_QUEUED_MESSAGE_LOCK_STALE_DAYS` | Integer | The number of days after which to consider a lock as stale. Messages with stale locks will be removed and not retried. | 1 |
|
| `POSTAL_QUEUED_MESSAGE_LOCK_STALE_DAYS` | Integer | The number of days after which to consider a lock as stale. Messages with stale locks will be removed and not retried. | 1 |
|
||||||
|
| `POSTAL_BATCH_QUEUED_MESSAGES` | Boolean | When enabled queued messages will be de-queued in batches based on their destination | true |
|
||||||
| `WEB_SERVER_DEFAULT_PORT` | Integer | The default port the web server should listen on unless overriden by the PORT environment variable | 5000 |
|
| `WEB_SERVER_DEFAULT_PORT` | Integer | The default port the web server should listen on unless overriden by the PORT environment variable | 5000 |
|
||||||
| `WEB_SERVER_DEFAULT_BIND_ADDRESS` | String | The default bind address the web server should listen on unless overriden by the BIND_ADDRESS environment variable | 127.0.0.1 |
|
| `WEB_SERVER_DEFAULT_BIND_ADDRESS` | String | The default bind address the web server should listen on unless overriden by the BIND_ADDRESS environment variable | 127.0.0.1 |
|
||||||
| `WEB_SERVER_MAX_THREADS` | Integer | The maximum number of threads which can be used by the web server | 5 |
|
| `WEB_SERVER_MAX_THREADS` | Integer | The maximum number of threads which can be used by the web server | 5 |
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ postal:
|
|||||||
trusted_proxies: []
|
trusted_proxies: []
|
||||||
# The number of days after which to consider a lock as stale. Messages with stale locks will be removed and not retried.
|
# The number of days after which to consider a lock as stale. Messages with stale locks will be removed and not retried.
|
||||||
queued_message_lock_stale_days: 1
|
queued_message_lock_stale_days: 1
|
||||||
|
# When enabled queued messages will be de-queued in batches based on their destination
|
||||||
|
batch_queued_messages: true
|
||||||
|
|
||||||
web_server:
|
web_server:
|
||||||
# The default port the web server should listen on unless overriden by the PORT environment variable
|
# The default port the web server should listen on unless overriden by the PORT environment variable
|
||||||
|
|||||||
@@ -96,6 +96,11 @@ module Postal
|
|||||||
description "The number of days after which to consider a lock as stale. Messages with stale locks will be removed and not retried."
|
description "The number of days after which to consider a lock as stale. Messages with stale locks will be removed and not retried."
|
||||||
default 1
|
default 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
boolean :batch_queued_messages do
|
||||||
|
description "When enabled queued messages will be de-queued in batches based on their destination"
|
||||||
|
default true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
group :web_server do
|
group :web_server do
|
||||||
|
|||||||
@@ -62,13 +62,28 @@ module MessageDequeuer
|
|||||||
@queued_message3 = create(:queued_message, message: @message3)
|
@queued_message3 = create(:queued_message, message: @message3)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "calls the single message process for the initial message and all batchable messages" do
|
context "when postal.batch_queued_messages is enabled" do
|
||||||
[queued_message, @queued_message2, @queued_message3].each do |msg|
|
it "calls the single message process for the initial message and all batchable messages" do
|
||||||
expect(SingleMessageProcessor).to receive(:process).with(msg,
|
[queued_message, @queued_message2, @queued_message3].each do |msg|
|
||||||
logger: logger,
|
expect(SingleMessageProcessor).to receive(:process).with(msg,
|
||||||
state: processor.state)
|
logger: logger,
|
||||||
|
state: processor.state)
|
||||||
|
end
|
||||||
|
processor.process
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when postal.batch_queued_messages is disabled" do
|
||||||
|
before do
|
||||||
|
allow(Postal::Config.postal).to receive(:batch_queued_messages?) { false }
|
||||||
|
end
|
||||||
|
|
||||||
|
it "does not call the single message process more than once" do
|
||||||
|
expect(SingleMessageProcessor).to receive(:process).once.with(queued_message,
|
||||||
|
logger: logger,
|
||||||
|
state: processor.state)
|
||||||
|
processor.process
|
||||||
end
|
end
|
||||||
processor.process
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
المرجع في مشكلة جديدة
حظر مستخدم