From c80af1a6e58057a6c37c02fe19e97dc24ea8bcae Mon Sep 17 00:00:00 2001 From: Leonid Groshev Date: Mon, 15 Jan 2024 15:00:29 +0300 Subject: [PATCH] added configuration for consumers max.poll.interval.ms --- src/Configuration/Type/MaxPollIntervalMs.php | 65 +++++++++++++++++++ src/DependencyInjection/Configuration.php | 4 ++ src/Resources/config/configuration_types.xml | 4 ++ .../Type/MaxPollIntervalMsTest.php | 26 ++++++++ 4 files changed, 99 insertions(+) create mode 100644 src/Configuration/Type/MaxPollIntervalMs.php create mode 100644 tests/Unit/Configuration/Type/MaxPollIntervalMsTest.php diff --git a/src/Configuration/Type/MaxPollIntervalMs.php b/src/Configuration/Type/MaxPollIntervalMs.php new file mode 100644 index 0000000..811534c --- /dev/null +++ b/src/Configuration/Type/MaxPollIntervalMs.php @@ -0,0 +1,65 @@ +getDefaultValue() + ); + } + + public function isValueValid($value): bool + { + return is_numeric($value) && !str_contains((string)$value, '.') && $value >= 0; + } + + public function getDefaultValue(): int + { + return 300000; + } + + public function cast($validatedValue): int + { + return (int) $validatedValue; + } +} diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php index 5161818..3e7e08e 100644 --- a/src/DependencyInjection/Configuration.php +++ b/src/DependencyInjection/Configuration.php @@ -13,6 +13,7 @@ use StsGamingGroup\KafkaBundle\Configuration\Type\EnableAutoOffsetStore; use StsGamingGroup\KafkaBundle\Configuration\Type\GroupId; use StsGamingGroup\KafkaBundle\Configuration\Type\LogLevel; +use StsGamingGroup\KafkaBundle\Configuration\Type\MaxPollIntervalMs; use StsGamingGroup\KafkaBundle\Configuration\Type\MaxRetries; use StsGamingGroup\KafkaBundle\Configuration\Type\MaxRetryDelay; use StsGamingGroup\KafkaBundle\Configuration\Type\ProducerPartition; @@ -143,6 +144,9 @@ private function addConsumerConfigurations(NodeBuilder $builder): void ->integerNode(StatisticsIntervalMs::NAME) ->defaultValue((new StatisticsIntervalMs)->getDefaultValue()) ->end() + ->integerNode(MaxPollIntervalMs::NAME) + ->defaultValue((new MaxPollIntervalMs)->getDefaultValue()) + ->end() ->scalarNode(AutoOffsetReset::NAME) ->defaultValue((new AutoOffsetReset)->getDefaultValue()) ->cannotBeEmpty() diff --git a/src/Resources/config/configuration_types.xml b/src/Resources/config/configuration_types.xml index b217f0e..f4021fd 100644 --- a/src/Resources/config/configuration_types.xml +++ b/src/Resources/config/configuration_types.xml @@ -29,6 +29,10 @@ id="sts_gaming_group_kafka.configuration.type.statistics_interval_ms"> + + + diff --git a/tests/Unit/Configuration/Type/MaxPollIntervalMsTest.php b/tests/Unit/Configuration/Type/MaxPollIntervalMsTest.php new file mode 100644 index 0000000..d4e2f10 --- /dev/null +++ b/tests/Unit/Configuration/Type/MaxPollIntervalMsTest.php @@ -0,0 +1,26 @@ +