From ee4257e4a9d7de3feae544c527a22c2bd71da029 Mon Sep 17 00:00:00 2001 From: mp107 Date: Sat, 12 Jul 2025 17:04:47 +0200 Subject: [PATCH] Add support for max_inbound_message_body_size parameter. Fixes #59 --- docs/input-rabbitmq.asciidoc | 8 ++++++++ lib/logstash/plugin_mixins/rabbitmq_connection.rb | 4 ++++ spec/plugin_mixins/rabbitmq_connection_spec.rb | 5 +++++ 3 files changed, 17 insertions(+) diff --git a/docs/input-rabbitmq.asciidoc b/docs/input-rabbitmq.asciidoc index 3d72b2b..d2b54aa 100644 --- a/docs/input-rabbitmq.asciidoc +++ b/docs/input-rabbitmq.asciidoc @@ -96,6 +96,7 @@ This plugin supports the following configuration options plus the <> |<>|Yes | <> |<>|No | <> |<>|No +| <> |<>|No | <> |<>|No | <> |<>|No | <> |<>|No @@ -259,6 +260,13 @@ This is only relevant for direct or topic exchanges. * Routing keys are ignored on fanout exchanges. * Wildcards are not valid on direct exchanges. +[id="plugins-{type}s-{plugin}-max_inbound_message_body_size"] +===== `max_inbound_message_body_size` + + * Value type is <> + +If unspecified then max_inbound_message_body_size of 67108864 bytes will be used. + [id="plugins-{type}s-{plugin}-metadata_enabled"] ===== `metadata_enabled` diff --git a/lib/logstash/plugin_mixins/rabbitmq_connection.rb b/lib/logstash/plugin_mixins/rabbitmq_connection.rb index 27fe9f4..429f3bf 100644 --- a/lib/logstash/plugin_mixins/rabbitmq_connection.rb +++ b/lib/logstash/plugin_mixins/rabbitmq_connection.rb @@ -72,6 +72,9 @@ def setup_rabbitmq_connection_config # Heartbeat delay in seconds. If unspecified no heartbeats will be sent config :heartbeat, :validate => :number + # Max inbound message size in bytes. If not specified default value of 67108864 bytes will be used + config :max_inbound_message_body_size, :validate => :number + # Passive queue creation? Useful for checking queue existance without modifying server state config :passive, :validate => :boolean, :default => false @@ -104,6 +107,7 @@ def rabbitmq_settings s[:connection_timeout] = @connection_timeout || 0 s[:requested_heartbeat] = @heartbeat || 0 + s[:max_inbound_message_body_size] = @max_inbound_message_body_size || 67108864 if @ssl s[:tls] = @ssl_version diff --git a/spec/plugin_mixins/rabbitmq_connection_spec.rb b/spec/plugin_mixins/rabbitmq_connection_spec.rb index c189a83..d348dcb 100644 --- a/spec/plugin_mixins/rabbitmq_connection_spec.rb +++ b/spec/plugin_mixins/rabbitmq_connection_spec.rb @@ -50,6 +50,7 @@ def register let(:rabbitmq_settings) { super().merge({"connection_timeout" => 123, "heartbeat" => 456, + "max_inbound_message_body_size" => 789, "ssl" => true, "ssl_version" => "TLSv1.1", "ssl_certificate_path" => path, @@ -63,6 +64,10 @@ def register expect(instance.rabbitmq_settings[:requested_heartbeat]).to eql(rabbitmq_settings["heartbeat"]) end + it "should set max_inbound_message_body_size to the expected value" do + expect(instance.rabbitmq_settings[:max_inbound_message_body_size]).to eql(rabbitmq_settings["max_inbound_message_body_size"]) + end + it "should set tls to the expected value" do expect(instance.rabbitmq_settings[:tls]).to eql("TLSv1.1") end