1
0
مراية لـ https://github.com/postalserver/postal.git تم المزامنة 2026-01-21 07:09:48 +00:00

fix(message-dequeuer): ability to disable batching

هذا الالتزام موجود في:
Adam Cooke
2024-03-16 15:31:46 +00:00
الأصل 45dd8aaac5
التزام 4fcb9e9a2e
5 ملفات معدلة مع 32 إضافات و7 حذوفات

عرض الملف

@@ -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,6 +62,7 @@ module MessageDequeuer
@queued_message3 = create(:queued_message, message: @message3) @queued_message3 = create(:queued_message, message: @message3)
end end
context "when postal.batch_queued_messages is enabled" do
it "calls the single message process for the initial message and all batchable messages" do it "calls the single message process for the initial message and all batchable messages" do
[queued_message, @queued_message2, @queued_message3].each do |msg| [queued_message, @queued_message2, @queued_message3].each do |msg|
expect(SingleMessageProcessor).to receive(:process).with(msg, expect(SingleMessageProcessor).to receive(:process).with(msg,
@@ -72,6 +73,20 @@ module MessageDequeuer
end end
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
end
context "when an error occurs while finding batchable messages" do context "when an error occurs while finding batchable messages" do
before do before do
allow(queued_message).to receive(:batchable_messages) { 1 / 0 } allow(queued_message).to receive(:batchable_messages) { 1 / 0 }