logstash-integration-kafka 11.8.6-java → 12.0.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -21
- data/docs/index.asciidoc +1 -1
- data/docs/input-kafka.asciidoc +18 -2
- data/docs/output-kafka.asciidoc +4 -26
- data/lib/logstash/inputs/kafka.rb +30 -2
- data/lib/logstash/outputs/kafka.rb +9 -24
- data/lib/logstash/plugin_mixins/kafka/common.rb +1 -1
- data/lib/logstash-integration-kafka_jars.rb +8 -30
- data/logstash-integration-kafka.gemspec +3 -3
- data/spec/fixtures/jaas.config +1 -1
- data/spec/fixtures/jaas3.config +5 -0
- data/spec/integration/inputs/kafka_spec.rb +66 -36
- data/spec/integration/outputs/kafka_spec.rb +4 -9
- data/spec/unit/inputs/kafka_spec.rb +0 -37
- data/vendor/jar-dependencies/com/github/luben/zstd-jni/1.5.6-10/zstd-jni-1.5.6-10.jar +0 -0
- data/vendor/jar-dependencies/io/confluent/kafka-avro-serializer/8.0.0/kafka-avro-serializer-8.0.0.jar +0 -0
- data/vendor/jar-dependencies/io/confluent/kafka-schema-registry-client/8.0.0/kafka-schema-registry-client-8.0.0.jar +0 -0
- data/vendor/jar-dependencies/io/confluent/kafka-schema-serializer/8.0.0/kafka-schema-serializer-8.0.0.jar +0 -0
- data/vendor/jar-dependencies/org/apache/kafka/kafka-clients/{3.9.2/kafka-clients-3.9.2.jar → 4.1.0/kafka-clients-4.1.0.jar} +0 -0
- data/vendor/jar-dependencies/org/lz4/lz4-java/1.8.0/lz4-java-1.8.0.jar +0 -0
- data/vendor/jar-dependencies/org/xerial/snappy/snappy-java/{1.1.10.5/snappy-java-1.1.10.5.jar → 1.1.10.7/snappy-java-1.1.10.7.jar} +0 -0
- metadata +12 -32
- data/vendor/jar-dependencies/at/yawk/lz4/lz4-java/1.10.1/lz4-java-1.10.1.jar +0 -0
- data/vendor/jar-dependencies/com/eclipsesource/minimal-json/minimal-json/0.9.5/minimal-json-0.9.5.jar +0 -0
- data/vendor/jar-dependencies/com/fasterxml/jackson/core/jackson-annotations/2.16.0/jackson-annotations-2.16.0.jar +0 -0
- data/vendor/jar-dependencies/com/fasterxml/jackson/core/jackson-core/2.16.0/jackson-core-2.16.0.jar +0 -0
- data/vendor/jar-dependencies/com/fasterxml/jackson/core/jackson-databind/2.16.0/jackson-databind-2.16.0.jar +0 -0
- data/vendor/jar-dependencies/com/fasterxml/jackson/dataformat/jackson-dataformat-csv/2.16.0/jackson-dataformat-csv-2.16.0.jar +0 -0
- data/vendor/jar-dependencies/com/github/luben/zstd-jni/1.5.6-4/zstd-jni-1.5.6-4.jar +0 -0
- data/vendor/jar-dependencies/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar +0 -0
- data/vendor/jar-dependencies/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.jar +0 -0
- data/vendor/jar-dependencies/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar +0 -0
- data/vendor/jar-dependencies/com/google/guava/guava/32.0.1-jre/guava-32.0.1-jre.jar +0 -0
- data/vendor/jar-dependencies/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar +0 -0
- data/vendor/jar-dependencies/com/google/j2objc/j2objc-annotations/2.8/j2objc-annotations-2.8.jar +0 -0
- data/vendor/jar-dependencies/com/google/re2j/re2j/1.6/re2j-1.6.jar +0 -0
- data/vendor/jar-dependencies/commons-codec/commons-codec/1.19.0/commons-codec-1.19.0.jar +0 -0
- data/vendor/jar-dependencies/commons-io/commons-io/2.20.0/commons-io-2.20.0.jar +0 -0
- data/vendor/jar-dependencies/io/confluent/common-utils/7.9.5/common-utils-7.9.5.jar +0 -0
- data/vendor/jar-dependencies/io/confluent/kafka-avro-serializer/7.9.5/kafka-avro-serializer-7.9.5.jar +0 -0
- data/vendor/jar-dependencies/io/confluent/kafka-schema-registry-client/7.9.5/kafka-schema-registry-client-7.9.5.jar +0 -0
- data/vendor/jar-dependencies/io/confluent/kafka-schema-serializer/7.9.5/kafka-schema-serializer-7.9.5.jar +0 -0
- data/vendor/jar-dependencies/io/confluent/logredactor/1.0.12/logredactor-1.0.12.jar +0 -0
- data/vendor/jar-dependencies/io/confluent/logredactor-metrics/1.0.12/logredactor-metrics-1.0.12.jar +0 -0
- data/vendor/jar-dependencies/io/swagger/core/v3/swagger-annotations/2.1.10/swagger-annotations-2.1.10.jar +0 -0
- data/vendor/jar-dependencies/org/apache/commons/commons-compress/1.28.0/commons-compress-1.28.0.jar +0 -0
- data/vendor/jar-dependencies/org/apache/commons/commons-lang3/3.18.0/commons-lang3-3.18.0.jar +0 -0
- data/vendor/jar-dependencies/org/checkerframework/checker-qual/3.33.0/checker-qual-3.33.0.jar +0 -0
- data/vendor/jar-dependencies/org/yaml/snakeyaml/2.0/snakeyaml-2.0.jar +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 744abb784463992c54a691cf16cbab0eca25f9b5cc73a54d9808f15bca223021
|
|
4
|
+
data.tar.gz: d35f68e589ee17adb865b7edcb1c9627b1345e9de93c5037828c15e8e83defdb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b85e870af8ae8dc030320ecd0c9ad312d72cceacb64b2e0ac313ca3629b3a1c24a3029f1512485b79ccd68e272eccddfee1ac32a314dc562af7cc1762b82aa53
|
|
7
|
+
data.tar.gz: 89fe6266982b250eb000650c91d8fdfc653cfc02d9cdf570c743edd5d7290ffd1735b0fbc3b68b018fb65215b67a909cdc5bb1dfb05e025256b35de0cca6b1af
|
data/CHANGELOG.md
CHANGED
|
@@ -1,24 +1,9 @@
|
|
|
1
|
-
##
|
|
2
|
-
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
-
|
|
6
|
-
|
|
7
|
-
## 11.8.4
|
|
8
|
-
- Upgrade kafka-avro-serializer dependency [#225](https://github.com/logstash-plugins/logstash-integration-kafka/pull/225)
|
|
9
|
-
|
|
10
|
-
## 11.8.3
|
|
11
|
-
- Re-packaging the plugin [#223](https://github.com/logstash-plugins/logstash-integration-kafka/pull/223)
|
|
12
|
-
|
|
13
|
-
## 11.8.2
|
|
14
|
-
- Upgrade transitive `org.apache.commons:commons-lang3` dependency [#217](https://github.com/logstash-plugins/logstash-integration-kafka/pull/217)
|
|
15
|
-
|
|
16
|
-
## 11.8.1
|
|
17
|
-
- Upgrade lz4 dependency [#213](https://github.com/logstash-plugins/logstash-integration-kafka/pull/213)
|
|
18
|
-
|
|
19
|
-
## 11.8.0
|
|
20
|
-
- Deprecate partitioner `default` and `uniform_sticky` options [#206](https://github.com/logstash-plugins/logstash-integration-kafka/pull/206)
|
|
21
|
-
Both options are deprecated in Kafka client 3 and will be removed in the plugin 12.0.0.
|
|
1
|
+
## 12.0.0
|
|
2
|
+
- Update kafka client to 4.1.0 and transitive dependencies [#205](https://github.com/logstash-plugins/logstash-integration-kafka/pull/205)
|
|
3
|
+
- Breaking Change: partitioner options `default` and `uniform_sticky` are removed
|
|
4
|
+
- `linger_ms` default value changed from 0 to 5
|
|
5
|
+
- Add `group_protocols` options for configuring Kafka consumer rebalance protocol
|
|
6
|
+
- Setting `group_protocols => consumer` opts in to the new consumer group protocol
|
|
22
7
|
|
|
23
8
|
## 11.7.0
|
|
24
9
|
- Add `reconnect_backoff_max_ms` option for configuring kafka client [#204](https://github.com/logstash-plugins/logstash-integration-kafka/pull/204)
|
data/docs/index.asciidoc
CHANGED
data/docs/input-kafka.asciidoc
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
:plugin: kafka
|
|
3
3
|
:type: input
|
|
4
4
|
:default_codec: plain
|
|
5
|
-
:kafka_client:
|
|
6
|
-
:kafka_client_doc:
|
|
5
|
+
:kafka_client: 4.1.0
|
|
6
|
+
:kafka_client_doc: 41
|
|
7
7
|
|
|
8
8
|
///////////////////////////////////////////
|
|
9
9
|
START - GENERATED VARIABLES, DO NOT EDIT!
|
|
@@ -132,6 +132,7 @@ See the https://kafka.apache.org/{kafka_client_doc}/documentation for more detai
|
|
|
132
132
|
| <<plugins-{type}s-{plugin}-fetch_min_bytes>> |<<number,number>>|No
|
|
133
133
|
| <<plugins-{type}s-{plugin}-group_id>> |<<string,string>>|No
|
|
134
134
|
| <<plugins-{type}s-{plugin}-group_instance_id>> |<<string,string>>|No
|
|
135
|
+
| <<plugins-{type}s-{plugin}-group_protocol>> |<<string,string>>|No
|
|
135
136
|
| <<plugins-{type}s-{plugin}-heartbeat_interval_ms>> |<<number,number>>|No
|
|
136
137
|
| <<plugins-{type}s-{plugin}-isolation_level>> |<<string,string>>|No
|
|
137
138
|
| <<plugins-{type}s-{plugin}-jaas_path>> |a valid filesystem path|No
|
|
@@ -412,6 +413,21 @@ You can set this value to use information such as a hostname, an IP, or anything
|
|
|
412
413
|
NOTE: In cases when multiple threads are configured and `consumer_threads` is greater than one, a suffix is appended to
|
|
413
414
|
the `group_instance_id` to avoid collisions.
|
|
414
415
|
|
|
416
|
+
[id="plugins-{type}s-{plugin}-group_protocol"]
|
|
417
|
+
===== `group_protocol`
|
|
418
|
+
|
|
419
|
+
* Value can be either of: `classic`, `consumer`
|
|
420
|
+
* Default value is `classic`.
|
|
421
|
+
|
|
422
|
+
Specifies the consumer group rebalance protocol used by the Kafka client.
|
|
423
|
+
|
|
424
|
+
`classic` is the default protocol. During a rebalance, all consumer instances pause message processing until partition assignments are complete.
|
|
425
|
+
|
|
426
|
+
`consumer` is an incremental rebalance protocol introduced in Kafka 4. It avoids global synchronization barriers by only pausing partitions that are reassigned.
|
|
427
|
+
When using `consumer`, the following settings **cannot be configured**:
|
|
428
|
+
`partition_assignment_strategy`, `heartbeat_interval_ms`, and `session_timeout_ms`.
|
|
429
|
+
|
|
430
|
+
|
|
415
431
|
[id="plugins-{type}s-{plugin}-heartbeat_interval_ms"]
|
|
416
432
|
===== `heartbeat_interval_ms`
|
|
417
433
|
|
data/docs/output-kafka.asciidoc
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
:plugin: kafka
|
|
3
3
|
:type: output
|
|
4
4
|
:default_codec: plain
|
|
5
|
-
:kafka_client:
|
|
6
|
-
:kafka_client_doc:
|
|
5
|
+
:kafka_client: 4.1.0
|
|
6
|
+
:kafka_client_doc: 41
|
|
7
7
|
|
|
8
8
|
///////////////////////////////////////////
|
|
9
9
|
START - GENERATED VARIABLES, DO NOT EDIT!
|
|
@@ -66,24 +66,6 @@ https://kafka.apache.org/{kafka_client_doc}/documentation.html#producerconfigs
|
|
|
66
66
|
|
|
67
67
|
NOTE: This plugin does not support using a proxy when communicating to the Kafka broker.
|
|
68
68
|
|
|
69
|
-
.Kafka timestamps and Logstash
|
|
70
|
-
****
|
|
71
|
-
* Kafka 3.6+ introduces stricter timestamp validation with the introduction of two new broker/topic-level properties: https://docs.confluent.io/platform/current/installation/configuration/topic-configs.html#message-timestamp-before-max-ms[log.message.timestamp.before.max.ms] and
|
|
72
|
-
https://docs.confluent.io/platform/current/installation/configuration/topic-configs.html#message-timestamp-after-max-ms[log.message.timestamp.after.max.ms].
|
|
73
|
-
+
|
|
74
|
-
These properties limit the time difference between the message timestamp (from Logstash) and the Kafka broker receive time.
|
|
75
|
-
Messages can be rejected if the values are exceeded and `log.message.timestamp.type=CreateTime` is set.
|
|
76
|
-
+
|
|
77
|
-
These checks are ignored if `log.message.timestamp.type=LogAppendTime` is set.
|
|
78
|
-
|
|
79
|
-
* For Kafka version 0.10.0.0+ the message creation timestamp is set by Logstash and equals the initial timestamp of the event.
|
|
80
|
-
This behavior affects Kafka’s retention policy.
|
|
81
|
-
For example, if a Logstash event was created two weeks ago and Kafka retention is set to seven days, then when the message arrives in Kafka today it may be discarded immediately, because its timestamp is older than seven days.
|
|
82
|
-
+
|
|
83
|
-
You can change this behavior by setting timestamps on message arrival instead.
|
|
84
|
-
The message is not discarded but kept for 7 more days. Set `log.message.timestamp.type` to `LogAppendTime` (default `CreateTime`) in your Kafka configuration.
|
|
85
|
-
****
|
|
86
|
-
|
|
87
69
|
[id="plugins-{type}s-{plugin}-aws_msk_iam_auth"]
|
|
88
70
|
==== AWS MSK IAM authentication
|
|
89
71
|
If you use AWS MSK, the AWS MSK IAM access control enables you to handle both authentication and authorization for your MSK cluster with AWS IAM.
|
|
@@ -303,7 +285,7 @@ Serializer class for the key of the message
|
|
|
303
285
|
===== `linger_ms`
|
|
304
286
|
|
|
305
287
|
* Value type is <<number,number>>
|
|
306
|
-
* Default value is `
|
|
288
|
+
* Default value is `5`
|
|
307
289
|
|
|
308
290
|
The producer groups together any records that arrive in between request
|
|
309
291
|
transmissions into a single batched request. Normally this occurs only under
|
|
@@ -369,13 +351,9 @@ The max time in milliseconds before a metadata refresh is forced.
|
|
|
369
351
|
|
|
370
352
|
By not setting this value, the plugin uses the built-in partitioning strategy provided by the Kafka client. Read more about the "partitioner.class" on the Kafka documentation.
|
|
371
353
|
|
|
372
|
-
Available
|
|
354
|
+
Available option is as follows:
|
|
373
355
|
|
|
374
|
-
* `default` hashes the `message_key` of an event to get the partition. When no message key is present, the plugin picks a partition in a round-robin fashion. Please note that this is a different strategy than the one used when `partitioner` is left unset.
|
|
375
356
|
* `round_robin` distributes writes to all partitions equally, regardless of `message_key`
|
|
376
|
-
* `uniform_sticky` hashes the `message_key` of an event to get the partition. When no message key is present, the plugin sticks to a partition for the duration of a batch than randomly picks a new one.
|
|
377
|
-
|
|
378
|
-
NOTE: `default` and `uniform_sticky` are deprecated and will be removed in `12.0.0`.
|
|
379
357
|
|
|
380
358
|
[id="plugins-{type}s-{plugin}-receive_buffer_bytes"]
|
|
381
359
|
===== `receive_buffer_bytes`
|
|
@@ -129,6 +129,12 @@ class LogStash::Inputs::Kafka < LogStash::Inputs::Base
|
|
|
129
129
|
# consumer crated by each thread an artificial suffix is appended to the user provided `group_instance_id`
|
|
130
130
|
# to avoid clashing.
|
|
131
131
|
config :group_instance_id, :validate => :string
|
|
132
|
+
# `classic` is the "stop-the-world" rebalances.
|
|
133
|
+
# Any consumer restart or failure triggers a full-group rebalance, pausing processing for all consumers.
|
|
134
|
+
# `consumer` is an incremental rebalance protocol that avoids global sync barriers,
|
|
135
|
+
# pausing only the partitions that are reassigned.
|
|
136
|
+
# It cannot set along with `partition_assignment_strategy`, `heartbeat_interval_ms` and `session_timeout_ms`
|
|
137
|
+
config :group_protocol, :validate => ["classic", "consumer"], :default => "classic"
|
|
132
138
|
# The expected time between heartbeats to the consumer coordinator. Heartbeats are used to ensure
|
|
133
139
|
# that the consumer's session stays active and to facilitate rebalancing when new
|
|
134
140
|
# consumers join or leave the group. The value must be set lower than
|
|
@@ -254,7 +260,7 @@ class LogStash::Inputs::Kafka < LogStash::Inputs::Base
|
|
|
254
260
|
# different JVM instances.
|
|
255
261
|
config :jaas_path, :validate => :path
|
|
256
262
|
# JAAS configuration settings. This allows JAAS config to be a part of the plugin configuration and allows for different JAAS configuration per each plugin config.
|
|
257
|
-
config :sasl_jaas_config, :validate => :
|
|
263
|
+
config :sasl_jaas_config, :validate => :string
|
|
258
264
|
# Optional path to kerberos config file. This is krb5.conf style as detailed in https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html
|
|
259
265
|
config :kerberos_config, :validate => :path
|
|
260
266
|
# Option to add Kafka metadata like topic, message size and header key values to the event.
|
|
@@ -293,6 +299,8 @@ class LogStash::Inputs::Kafka < LogStash::Inputs::Base
|
|
|
293
299
|
reassign_dns_lookup
|
|
294
300
|
@pattern ||= java.util.regex.Pattern.compile(@topics_pattern) unless @topics_pattern.nil?
|
|
295
301
|
check_schema_registry_parameters
|
|
302
|
+
|
|
303
|
+
set_group_protocol!
|
|
296
304
|
end
|
|
297
305
|
|
|
298
306
|
METADATA_NONE = Set[].freeze
|
|
@@ -450,6 +458,7 @@ class LogStash::Inputs::Kafka < LogStash::Inputs::Base
|
|
|
450
458
|
props.put(kafka::FETCH_MIN_BYTES_CONFIG, fetch_min_bytes.to_s) unless fetch_min_bytes.nil?
|
|
451
459
|
props.put(kafka::GROUP_ID_CONFIG, group_id)
|
|
452
460
|
props.put(kafka::GROUP_INSTANCE_ID_CONFIG, group_instance_id) unless group_instance_id.nil?
|
|
461
|
+
props.put(kafka::GROUP_PROTOCOL_CONFIG, group_protocol)
|
|
453
462
|
props.put(kafka::HEARTBEAT_INTERVAL_MS_CONFIG, heartbeat_interval_ms.to_s) unless heartbeat_interval_ms.nil?
|
|
454
463
|
props.put(kafka::ISOLATION_LEVEL_CONFIG, isolation_level)
|
|
455
464
|
props.put(kafka::KEY_DESERIALIZER_CLASS_CONFIG, key_deserializer_class)
|
|
@@ -471,7 +480,7 @@ class LogStash::Inputs::Kafka < LogStash::Inputs::Base
|
|
|
471
480
|
props.put("security.protocol", security_protocol) unless security_protocol.nil?
|
|
472
481
|
if schema_registry_url
|
|
473
482
|
props.put(kafka::VALUE_DESERIALIZER_CLASS_CONFIG, Java::io.confluent.kafka.serializers.KafkaAvroDeserializer.java_class)
|
|
474
|
-
serdes_config = Java::io.confluent.kafka.serializers.
|
|
483
|
+
serdes_config = Java::io.confluent.kafka.serializers.AbstractKafkaSchemaSerDeConfig
|
|
475
484
|
props.put(serdes_config::SCHEMA_REGISTRY_URL_CONFIG, schema_registry_url.uri.to_s)
|
|
476
485
|
if schema_registry_proxy && !schema_registry_proxy.empty?
|
|
477
486
|
props.put(serdes_config::PROXY_HOST, @schema_registry_proxy_host)
|
|
@@ -513,6 +522,25 @@ class LogStash::Inputs::Kafka < LogStash::Inputs::Base
|
|
|
513
522
|
end
|
|
514
523
|
end
|
|
515
524
|
|
|
525
|
+
# In order to use group_protocol => consumer, heartbeat_interval_ms, session_timeout_ms and partition_assignment_strategy need to be unset
|
|
526
|
+
# If any of these are not using the default value of the plugin, we raise a configuration error
|
|
527
|
+
def set_group_protocol!
|
|
528
|
+
return unless group_protocol == "consumer"
|
|
529
|
+
|
|
530
|
+
heartbeat_overridden = heartbeat_interval_ms != self.class.get_config.dig("heartbeat_interval_ms", :default)
|
|
531
|
+
session_overridden = session_timeout_ms != self.class.get_config.dig("session_timeout_ms", :default)
|
|
532
|
+
strategy_defined = !partition_assignment_strategy.nil?
|
|
533
|
+
|
|
534
|
+
if strategy_defined || heartbeat_overridden || session_overridden
|
|
535
|
+
raise LogStash::ConfigurationError, "group_protocol cannot be set to 'consumer' "\
|
|
536
|
+
"when any of partition_assignment_strategy, heartbeat_interval_ms or session_timeout_ms is set"
|
|
537
|
+
end
|
|
538
|
+
|
|
539
|
+
@heartbeat_interval_ms = nil
|
|
540
|
+
@session_timeout_ms = nil
|
|
541
|
+
logger.debug("Settings 'heartbeat_interval_ms' and 'session_timeout_ms' have been reset since 'group_protocol' is configured as 'consumer'")
|
|
542
|
+
end
|
|
543
|
+
|
|
516
544
|
def partition_assignment_strategy_class
|
|
517
545
|
case partition_assignment_strategy
|
|
518
546
|
when 'range'
|
|
@@ -101,7 +101,7 @@ class LogStash::Outputs::Kafka < LogStash::Outputs::Base
|
|
|
101
101
|
# This setting accomplishes this by adding a small amount of artificial delay—that is,
|
|
102
102
|
# rather than immediately sending out a record the producer will wait for up to the given delay
|
|
103
103
|
# to allow other records to be sent so that the sends can be batched together.
|
|
104
|
-
config :linger_ms, :validate => :number, :default =>
|
|
104
|
+
config :linger_ms, :validate => :number, :default => 5 # Kafka default
|
|
105
105
|
# The maximum size of a request
|
|
106
106
|
config :max_request_size, :validate => :number, :default => 1_048_576 # (1MB) Kafka default
|
|
107
107
|
# The key for the message
|
|
@@ -110,7 +110,7 @@ class LogStash::Outputs::Kafka < LogStash::Outputs::Base
|
|
|
110
110
|
config :message_headers, :validate => :hash, :default => {}
|
|
111
111
|
# the timeout setting for initial metadata request to fetch topic metadata.
|
|
112
112
|
config :metadata_fetch_timeout_ms, :validate => :number, :default => 60_000
|
|
113
|
-
# Partitioner to use - can be `
|
|
113
|
+
# Partitioner to use - can be `round_robin` or a fully qualified class name of a custom partitioner.
|
|
114
114
|
config :partitioner, :validate => :string
|
|
115
115
|
# The size of the TCP receive buffer to use when reading data
|
|
116
116
|
config :receive_buffer_bytes, :validate => :number, :default => 32_768 # (32KB) Kafka default
|
|
@@ -369,8 +369,8 @@ class LogStash::Outputs::Kafka < LogStash::Outputs::Base
|
|
|
369
369
|
props.put(kafka::LINGER_MS_CONFIG, linger_ms.to_s)
|
|
370
370
|
props.put(kafka::MAX_REQUEST_SIZE_CONFIG, max_request_size.to_s)
|
|
371
371
|
props.put(kafka::METADATA_MAX_AGE_CONFIG, metadata_max_age_ms.to_s) unless metadata_max_age_ms.nil?
|
|
372
|
-
|
|
373
|
-
props.put(kafka::PARTITIONER_CLASS_CONFIG, partitioner
|
|
372
|
+
partitioner_class&.tap do |partitioner|
|
|
373
|
+
props.put(kafka::PARTITIONER_CLASS_CONFIG, partitioner)
|
|
374
374
|
logger.debug('producer configured using partitioner', :partitioner_class => partitioner)
|
|
375
375
|
end
|
|
376
376
|
props.put(kafka::RECEIVE_BUFFER_CONFIG, receive_buffer_bytes.to_s) unless receive_buffer_bytes.nil?
|
|
@@ -405,27 +405,12 @@ class LogStash::Outputs::Kafka < LogStash::Outputs::Base
|
|
|
405
405
|
end
|
|
406
406
|
|
|
407
407
|
def partitioner_class
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
log_partitioner_warning(partitioner, 'UniformStickyPartitioner')
|
|
413
|
-
'org.apache.kafka.clients.producer.UniformStickyPartitioner'
|
|
414
|
-
when 'default'
|
|
415
|
-
log_partitioner_warning(partitioner, 'DefaultPartitioner')
|
|
416
|
-
'org.apache.kafka.clients.producer.internals.DefaultPartitioner'
|
|
417
|
-
else
|
|
418
|
-
unless partitioner.index('.')
|
|
419
|
-
raise LogStash::ConfigurationError, "unsupported partitioner: #{partitioner.inspect}"
|
|
420
|
-
end
|
|
421
|
-
partitioner # assume a fully qualified class-name
|
|
422
|
-
end
|
|
423
|
-
end
|
|
408
|
+
return nil if partitioner.nil?
|
|
409
|
+
return 'org.apache.kafka.clients.producer.RoundRobinPartitioner' if partitioner == 'round_robin'
|
|
410
|
+
|
|
411
|
+
raise LogStash::ConfigurationError, "unsupported partitioner: #{partitioner.inspect}" unless partitioner.include?('.')
|
|
424
412
|
|
|
425
|
-
|
|
426
|
-
deprecation_logger.deprecated("Producer `partitioner` is configured with the deprecated option `#{partitioner}`. " \
|
|
427
|
-
"#{class_name} is removed in kafka-client 4.0 and the `#{partitioner}` option will be removed in the plugin 12.0.0. "\
|
|
428
|
-
'Please update your configuration to use `round_robin` or unset the option to use the build-in partitioning strategy. ')
|
|
413
|
+
partitioner
|
|
429
414
|
end
|
|
430
415
|
|
|
431
416
|
end #class LogStash::Outputs::Kafka
|
|
@@ -40,7 +40,7 @@ module LogStash module PluginMixins module Kafka
|
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
props.put("sasl.kerberos.service.name", sasl_kerberos_service_name) unless sasl_kerberos_service_name.nil?
|
|
43
|
-
props.put("sasl.jaas.config", sasl_jaas_config
|
|
43
|
+
props.put("sasl.jaas.config", sasl_jaas_config) unless sasl_jaas_config.nil?
|
|
44
44
|
props.put("sasl.client.callback.handler.class", sasl_client_callback_handler_class) unless sasl_client_callback_handler_class.nil?
|
|
45
45
|
props.put("sasl.oauthbearer.token.endpoint.url", sasl_oauthbearer_token_endpoint_url) unless sasl_oauthbearer_token_endpoint_url.nil?
|
|
46
46
|
props.put("sasl.oauthbearer.scope.claim.name", sasl_oauthbearer_scope_claim_name) unless sasl_oauthbearer_scope_claim_name.nil?
|
|
@@ -1,35 +1,13 @@
|
|
|
1
1
|
# AUTOGENERATED BY THE GRADLE SCRIPT. DO NOT EDIT.
|
|
2
2
|
|
|
3
3
|
require 'jar_dependencies'
|
|
4
|
-
require_jar('io.confluent', 'kafka-avro-serializer', '
|
|
5
|
-
require_jar('
|
|
6
|
-
require_jar('at.yawk.lz4', 'lz4-java', '1.10.1')
|
|
7
|
-
require_jar('io.confluent', 'kafka-schema-serializer', '7.9.5')
|
|
8
|
-
require_jar('io.confluent', 'kafka-schema-registry-client', '7.9.5')
|
|
4
|
+
require_jar('io.confluent', 'kafka-avro-serializer', '8.0.0')
|
|
5
|
+
require_jar('io.confluent', 'kafka-schema-serializer', '8.0.0')
|
|
9
6
|
require_jar('org.apache.avro', 'avro', '1.11.4')
|
|
10
|
-
require_jar('
|
|
11
|
-
require_jar('com.google.guava', 'guava', '32.0.1-jre')
|
|
12
|
-
require_jar('io.confluent', 'logredactor', '1.0.12')
|
|
13
|
-
require_jar('io.confluent', 'common-utils', '7.9.5')
|
|
14
|
-
require_jar('com.github.luben', 'zstd-jni', '1.5.6-4')
|
|
15
|
-
require_jar('org.xerial.snappy', 'snappy-java', '1.1.10.5')
|
|
16
|
-
require_jar('org.slf4j', 'slf4j-api', '1.7.36')
|
|
7
|
+
require_jar('io.confluent', 'kafka-schema-registry-client', '8.0.0')
|
|
17
8
|
require_jar('com.fasterxml.jackson.datatype', 'jackson-datatype-jdk8', '2.16.0')
|
|
18
|
-
require_jar('
|
|
19
|
-
require_jar('
|
|
20
|
-
require_jar('com.
|
|
21
|
-
require_jar('
|
|
22
|
-
require_jar('org.
|
|
23
|
-
require_jar('io.swagger.core.v3', 'swagger-annotations', '2.1.10')
|
|
24
|
-
require_jar('com.google.guava', 'failureaccess', '1.0.1')
|
|
25
|
-
require_jar('com.google.guava', 'listenablefuture', '9999.0-empty-to-avoid-conflict-with-guava')
|
|
26
|
-
require_jar('com.google.code.findbugs', 'jsr305', '3.0.2')
|
|
27
|
-
require_jar('org.checkerframework', 'checker-qual', '3.33.0')
|
|
28
|
-
require_jar('com.google.errorprone', 'error_prone_annotations', '2.18.0')
|
|
29
|
-
require_jar('com.google.j2objc', 'j2objc-annotations', '2.8')
|
|
30
|
-
require_jar('com.google.re2j', 're2j', '1.6')
|
|
31
|
-
require_jar('io.confluent', 'logredactor-metrics', '1.0.12')
|
|
32
|
-
require_jar('com.eclipsesource.minimal-json', 'minimal-json', '0.9.5')
|
|
33
|
-
require_jar('commons-codec', 'commons-codec', '1.19.0')
|
|
34
|
-
require_jar('commons-io', 'commons-io', '2.20.0')
|
|
35
|
-
require_jar('org.apache.commons', 'commons-lang3', '3.18.0')
|
|
9
|
+
require_jar('org.apache.kafka', 'kafka-clients', '4.1.0')
|
|
10
|
+
require_jar('org.slf4j', 'slf4j-api', '1.7.36')
|
|
11
|
+
require_jar('com.github.luben', 'zstd-jni', '1.5.6-10')
|
|
12
|
+
require_jar('org.lz4', 'lz4-java', '1.8.0')
|
|
13
|
+
require_jar('org.xerial.snappy', 'snappy-java', '1.1.10.7')
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
Gem::Specification.new do |s|
|
|
2
2
|
s.name = 'logstash-integration-kafka'
|
|
3
|
-
s.version = '
|
|
3
|
+
s.version = '12.0.0'
|
|
4
4
|
s.licenses = ['Apache-2.0']
|
|
5
5
|
s.summary = "Integration with Kafka - input and output plugins"
|
|
6
6
|
s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline "+
|
|
7
7
|
"using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program."
|
|
8
8
|
s.authors = ["Elastic"]
|
|
9
9
|
s.email = 'info@elastic.co'
|
|
10
|
-
s.homepage = "
|
|
11
|
-
s.require_paths =
|
|
10
|
+
s.homepage = "http://www.elastic.co/guide/en/logstash/current/index.html"
|
|
11
|
+
s.require_paths = ['lib', 'vendor/jar-dependencies']
|
|
12
12
|
|
|
13
13
|
# Files
|
|
14
14
|
s.files = Dir.glob(%w(
|
data/spec/fixtures/jaas.config
CHANGED
|
@@ -187,53 +187,83 @@ describe "inputs/kafka", :integration => true do
|
|
|
187
187
|
end
|
|
188
188
|
end
|
|
189
189
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
let(:
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
'
|
|
196
|
-
|
|
190
|
+
context 'setting group_protocol' do
|
|
191
|
+
let(:test_topic) { 'logstash_integration_partitioner_topic' }
|
|
192
|
+
let(:consumer_config) do
|
|
193
|
+
plain_config.merge(
|
|
194
|
+
"topics" => [test_topic],
|
|
195
|
+
'group_protocol' => group_protocol,
|
|
196
|
+
"partition_assignment_strategy" => partition_assignment_strategy,
|
|
197
|
+
"heartbeat_interval_ms" => heartbeat_interval_ms,
|
|
198
|
+
"session_timeout_ms" => session_timeout_ms
|
|
199
|
+
)
|
|
197
200
|
end
|
|
201
|
+
let(:group_protocol) { nil }
|
|
202
|
+
let(:partition_assignment_strategy) { nil }
|
|
203
|
+
let(:heartbeat_interval_ms) { LogStash::Inputs::Kafka.get_config().dig("heartbeat_interval_ms", :default) }
|
|
204
|
+
let(:session_timeout_ms) { LogStash::Inputs::Kafka.get_config().dig("session_timeout_ms", :default) }
|
|
198
205
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
kafka_input = LogStash::Inputs::Kafka.new(consumer_config)
|
|
202
|
-
expect(kafka_input.sasl_jaas_config).to be_a(LogStash::Util::Password)
|
|
203
|
-
expect(kafka_input.sasl_jaas_config.value).to eq(jaas_config_value)
|
|
204
|
-
end
|
|
206
|
+
describe "group_protocol = classic" do
|
|
207
|
+
let(:group_protocol) { 'classic' }
|
|
205
208
|
|
|
206
|
-
it '
|
|
209
|
+
it 'passes register check' do
|
|
207
210
|
kafka_input = LogStash::Inputs::Kafka.new(consumer_config)
|
|
208
|
-
expect
|
|
209
|
-
|
|
211
|
+
expect {
|
|
212
|
+
kafka_input.register
|
|
213
|
+
}.to_not raise_error
|
|
214
|
+
|
|
215
|
+
expect( kafka_input.instance_variable_get(:@heartbeat_interval_ms)).eql?(heartbeat_interval_ms)
|
|
216
|
+
expect( kafka_input.instance_variable_get(:@session_timeout_ms)).eql?(session_timeout_ms)
|
|
210
217
|
end
|
|
211
218
|
end
|
|
212
219
|
|
|
213
|
-
|
|
214
|
-
let(:
|
|
215
|
-
let(:consumer_config) { base_config.merge('sasl_jaas_config' => jaas_config_value) }
|
|
220
|
+
describe "group_protocol = consumer" do
|
|
221
|
+
let(:group_protocol) { 'consumer' }
|
|
216
222
|
|
|
217
|
-
|
|
218
|
-
|
|
223
|
+
describe "passes register check with supported config" do
|
|
224
|
+
it 'reset unsupported config to nil' do
|
|
225
|
+
kafka_input = LogStash::Inputs::Kafka.new(consumer_config)
|
|
226
|
+
expect {
|
|
227
|
+
kafka_input.register
|
|
228
|
+
}.to_not raise_error
|
|
219
229
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
230
|
+
expect( kafka_input.instance_variable_get(:@heartbeat_interval_ms)).to be_nil
|
|
231
|
+
expect( kafka_input.instance_variable_get(:@session_timeout_ms)).to be_nil
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
{
|
|
236
|
+
partition_assignment_strategy: 'range',
|
|
237
|
+
heartbeat_interval_ms: 2000,
|
|
238
|
+
session_timeout_ms: 6000
|
|
239
|
+
}.each do |config_key, config_value|
|
|
240
|
+
context "with unsupported config #{config_key}" do
|
|
241
|
+
let(config_key) { config_value }
|
|
242
|
+
|
|
243
|
+
it 'raises LogStash::ConfigurationError' do
|
|
244
|
+
kafka_input = LogStash::Inputs::Kafka.new(consumer_config)
|
|
245
|
+
expect {
|
|
246
|
+
kafka_input.register
|
|
247
|
+
}.to raise_error(LogStash::ConfigurationError, /group_protocol cannot be set to.*consumer.*/)
|
|
248
|
+
end
|
|
249
|
+
end
|
|
229
250
|
end
|
|
230
|
-
let(:consumer_config) { base_config.merge('sasl_jaas_config' => jaas_config_value) }
|
|
231
251
|
|
|
232
|
-
|
|
252
|
+
context "with valid config" do
|
|
253
|
+
let(:test_topic) { 'logstash_integration_topic_plain' }
|
|
254
|
+
let(:manual_commit_config) do
|
|
255
|
+
consumer_config.merge(
|
|
256
|
+
'enable_auto_commit' => 'false'
|
|
257
|
+
)
|
|
258
|
+
end
|
|
259
|
+
it 'consume data' do
|
|
260
|
+
queue = consume_messages(manual_commit_config, timeout: timeout_seconds, event_count: num_events)
|
|
261
|
+
expect(queue.length).to eq(num_events)
|
|
262
|
+
end
|
|
263
|
+
end
|
|
233
264
|
end
|
|
234
265
|
end
|
|
235
266
|
|
|
236
|
-
|
|
237
267
|
context "static membership 'group.instance.id' setting" do
|
|
238
268
|
let(:base_config) do
|
|
239
269
|
{
|
|
@@ -533,7 +563,7 @@ describe "Deserializing with the schema registry", :integration => true do
|
|
|
533
563
|
def delete_topic_if_exists(topic_name, user = nil, password = nil)
|
|
534
564
|
props = java.util.Properties.new
|
|
535
565
|
props.put(Java::org.apache.kafka.clients.admin.AdminClientConfig::BOOTSTRAP_SERVERS_CONFIG, "localhost:9092")
|
|
536
|
-
serdes_config = Java::io.confluent.kafka.serializers.
|
|
566
|
+
serdes_config = Java::io.confluent.kafka.serializers.AbstractKafkaSchemaSerDeConfig
|
|
537
567
|
unless user.nil?
|
|
538
568
|
props.put(serdes_config::BASIC_AUTH_CREDENTIALS_SOURCE, 'USER_INFO')
|
|
539
569
|
props.put(serdes_config::USER_INFO_CONFIG, "#{user}:#{password}")
|
|
@@ -542,7 +572,7 @@ describe "Deserializing with the schema registry", :integration => true do
|
|
|
542
572
|
topics_list = admin_client.listTopics().names().get()
|
|
543
573
|
if topics_list.contains(topic_name)
|
|
544
574
|
result = admin_client.deleteTopics([topic_name])
|
|
545
|
-
result.
|
|
575
|
+
result.topicNameValues().get(topic_name).get()
|
|
546
576
|
end
|
|
547
577
|
end
|
|
548
578
|
|
|
@@ -550,7 +580,7 @@ describe "Deserializing with the schema registry", :integration => true do
|
|
|
550
580
|
props = java.util.Properties.new
|
|
551
581
|
config = org.apache.kafka.clients.producer.ProducerConfig
|
|
552
582
|
|
|
553
|
-
serdes_config = Java::io.confluent.kafka.serializers.
|
|
583
|
+
serdes_config = Java::io.confluent.kafka.serializers.AbstractKafkaSchemaSerDeConfig
|
|
554
584
|
props.put(serdes_config::SCHEMA_REGISTRY_URL_CONFIG, "http://localhost:8081")
|
|
555
585
|
|
|
556
586
|
props.put(config::BOOTSTRAP_SERVERS_CONFIG, "localhost:9092")
|
|
@@ -164,7 +164,7 @@ describe "outputs/kafka", :integration => true do
|
|
|
164
164
|
let(:test_topic) { 'logstash_integration_topic3' }
|
|
165
165
|
|
|
166
166
|
before :each do
|
|
167
|
-
config = base_config.merge("topic_id" => test_topic, "partitioner" => 'org.apache.kafka.clients.producer.
|
|
167
|
+
config = base_config.merge("topic_id" => test_topic, "partitioner" => 'org.apache.kafka.clients.producer.RoundRobinPartitioner')
|
|
168
168
|
load_kafka_data(config) do # let's have a bit more (diverse) dataset
|
|
169
169
|
num_events.times.collect do
|
|
170
170
|
LogStash::Event.new.tap do |e|
|
|
@@ -212,7 +212,7 @@ describe "outputs/kafka", :integration => true do
|
|
|
212
212
|
|
|
213
213
|
context 'setting partitioner' do
|
|
214
214
|
let(:test_topic) { 'logstash_integration_partitioner_topic' }
|
|
215
|
-
let(:partitioner) {
|
|
215
|
+
let(:partitioner) { 'round_robin' }
|
|
216
216
|
|
|
217
217
|
before :each do
|
|
218
218
|
@messages_offset = fetch_messages_from_all_partitions
|
|
@@ -221,13 +221,8 @@ describe "outputs/kafka", :integration => true do
|
|
|
221
221
|
load_kafka_data(config)
|
|
222
222
|
end
|
|
223
223
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
let(:partitioner) { partitioner }
|
|
227
|
-
it 'loads data' do
|
|
228
|
-
expect(fetch_messages_from_all_partitions - @messages_offset).to eql num_events
|
|
229
|
-
end
|
|
230
|
-
end
|
|
224
|
+
it 'loads data' do
|
|
225
|
+
expect(fetch_messages_from_all_partitions - @messages_offset).to eql num_events
|
|
231
226
|
end
|
|
232
227
|
|
|
233
228
|
def fetch_messages_from_all_partitions
|
|
@@ -264,43 +264,6 @@ describe LogStash::Inputs::Kafka do
|
|
|
264
264
|
|
|
265
265
|
expect(subject.send(:create_consumer, 'test-client-2', 'group_instance_id')).to be kafka_client
|
|
266
266
|
end
|
|
267
|
-
|
|
268
|
-
context 'with sasl_jaas_config' do
|
|
269
|
-
shared_examples 'sasl_jaas_config password handling' do
|
|
270
|
-
it "sasl_jaas_config.value returns the original string" do
|
|
271
|
-
subject.register
|
|
272
|
-
expect(subject.sasl_jaas_config.value).to eq(jaas_config_value)
|
|
273
|
-
end
|
|
274
|
-
|
|
275
|
-
it "sasl_jaas_config.inspect does not expose the password" do
|
|
276
|
-
subject.register
|
|
277
|
-
expect(subject.sasl_jaas_config.inspect).not_to include('admin-secret')
|
|
278
|
-
expect(subject.sasl_jaas_config.inspect).to eq('<password>')
|
|
279
|
-
end
|
|
280
|
-
end
|
|
281
|
-
|
|
282
|
-
context 'with single-line config' do
|
|
283
|
-
let(:jaas_config_value) { 'org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret";' }
|
|
284
|
-
let(:config) { super().merge('sasl_jaas_config' => jaas_config_value) }
|
|
285
|
-
|
|
286
|
-
include_examples 'sasl_jaas_config password handling'
|
|
287
|
-
end
|
|
288
|
-
|
|
289
|
-
context 'with multiline config' do
|
|
290
|
-
let(:jaas_config_value) {
|
|
291
|
-
<<~JAAS
|
|
292
|
-
org.apache.kafka.common.security.plain.PlainLoginModule required
|
|
293
|
-
username="admin"
|
|
294
|
-
password="admin-secret"
|
|
295
|
-
user_admin="admin-secret"
|
|
296
|
-
user_alice="alice-secret";
|
|
297
|
-
JAAS
|
|
298
|
-
}
|
|
299
|
-
let(:config) { super().merge('sasl_jaas_config' => jaas_config_value) }
|
|
300
|
-
|
|
301
|
-
include_examples 'sasl_jaas_config password handling'
|
|
302
|
-
end
|
|
303
|
-
end
|
|
304
267
|
end
|
|
305
268
|
|
|
306
269
|
describe "schema registry" do
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: logstash-integration-kafka
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 12.0.0
|
|
5
5
|
platform: java
|
|
6
6
|
authors:
|
|
7
7
|
- Elastic
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 2025-10-16 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: logstash-core-plugin-api
|
|
@@ -235,6 +235,7 @@ files:
|
|
|
235
235
|
- logstash-integration-kafka.gemspec
|
|
236
236
|
- spec/check_docs_spec.rb
|
|
237
237
|
- spec/fixtures/jaas.config
|
|
238
|
+
- spec/fixtures/jaas3.config
|
|
238
239
|
- spec/fixtures/pwd
|
|
239
240
|
- spec/fixtures/trust-store_stub.jks
|
|
240
241
|
- spec/integration/inputs/kafka_spec.rb
|
|
@@ -242,39 +243,17 @@ files:
|
|
|
242
243
|
- spec/unit/inputs/avro_schema_fixture_payment.asvc
|
|
243
244
|
- spec/unit/inputs/kafka_spec.rb
|
|
244
245
|
- spec/unit/outputs/kafka_spec.rb
|
|
245
|
-
- vendor/jar-dependencies/at/yawk/lz4/lz4-java/1.10.1/lz4-java-1.10.1.jar
|
|
246
|
-
- vendor/jar-dependencies/com/eclipsesource/minimal-json/minimal-json/0.9.5/minimal-json-0.9.5.jar
|
|
247
|
-
- vendor/jar-dependencies/com/fasterxml/jackson/core/jackson-annotations/2.16.0/jackson-annotations-2.16.0.jar
|
|
248
|
-
- vendor/jar-dependencies/com/fasterxml/jackson/core/jackson-core/2.16.0/jackson-core-2.16.0.jar
|
|
249
|
-
- vendor/jar-dependencies/com/fasterxml/jackson/core/jackson-databind/2.16.0/jackson-databind-2.16.0.jar
|
|
250
|
-
- vendor/jar-dependencies/com/fasterxml/jackson/dataformat/jackson-dataformat-csv/2.16.0/jackson-dataformat-csv-2.16.0.jar
|
|
251
246
|
- vendor/jar-dependencies/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.16.0/jackson-datatype-jdk8-2.16.0.jar
|
|
252
|
-
- vendor/jar-dependencies/com/github/luben/zstd-jni/1.5.6-
|
|
253
|
-
- vendor/jar-dependencies/
|
|
254
|
-
- vendor/jar-dependencies/
|
|
255
|
-
- vendor/jar-dependencies/
|
|
256
|
-
- vendor/jar-dependencies/com/google/guava/guava/32.0.1-jre/guava-32.0.1-jre.jar
|
|
257
|
-
- vendor/jar-dependencies/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
|
|
258
|
-
- vendor/jar-dependencies/com/google/j2objc/j2objc-annotations/2.8/j2objc-annotations-2.8.jar
|
|
259
|
-
- vendor/jar-dependencies/com/google/re2j/re2j/1.6/re2j-1.6.jar
|
|
260
|
-
- vendor/jar-dependencies/commons-codec/commons-codec/1.19.0/commons-codec-1.19.0.jar
|
|
261
|
-
- vendor/jar-dependencies/commons-io/commons-io/2.20.0/commons-io-2.20.0.jar
|
|
262
|
-
- vendor/jar-dependencies/io/confluent/common-utils/7.9.5/common-utils-7.9.5.jar
|
|
263
|
-
- vendor/jar-dependencies/io/confluent/kafka-avro-serializer/7.9.5/kafka-avro-serializer-7.9.5.jar
|
|
264
|
-
- vendor/jar-dependencies/io/confluent/kafka-schema-registry-client/7.9.5/kafka-schema-registry-client-7.9.5.jar
|
|
265
|
-
- vendor/jar-dependencies/io/confluent/kafka-schema-serializer/7.9.5/kafka-schema-serializer-7.9.5.jar
|
|
266
|
-
- vendor/jar-dependencies/io/confluent/logredactor-metrics/1.0.12/logredactor-metrics-1.0.12.jar
|
|
267
|
-
- vendor/jar-dependencies/io/confluent/logredactor/1.0.12/logredactor-1.0.12.jar
|
|
268
|
-
- vendor/jar-dependencies/io/swagger/core/v3/swagger-annotations/2.1.10/swagger-annotations-2.1.10.jar
|
|
247
|
+
- vendor/jar-dependencies/com/github/luben/zstd-jni/1.5.6-10/zstd-jni-1.5.6-10.jar
|
|
248
|
+
- vendor/jar-dependencies/io/confluent/kafka-avro-serializer/8.0.0/kafka-avro-serializer-8.0.0.jar
|
|
249
|
+
- vendor/jar-dependencies/io/confluent/kafka-schema-registry-client/8.0.0/kafka-schema-registry-client-8.0.0.jar
|
|
250
|
+
- vendor/jar-dependencies/io/confluent/kafka-schema-serializer/8.0.0/kafka-schema-serializer-8.0.0.jar
|
|
269
251
|
- vendor/jar-dependencies/org/apache/avro/avro/1.11.4/avro-1.11.4.jar
|
|
270
|
-
- vendor/jar-dependencies/org/apache/
|
|
271
|
-
- vendor/jar-dependencies/org/
|
|
272
|
-
- vendor/jar-dependencies/org/apache/kafka/kafka-clients/3.9.2/kafka-clients-3.9.2.jar
|
|
273
|
-
- vendor/jar-dependencies/org/checkerframework/checker-qual/3.33.0/checker-qual-3.33.0.jar
|
|
252
|
+
- vendor/jar-dependencies/org/apache/kafka/kafka-clients/4.1.0/kafka-clients-4.1.0.jar
|
|
253
|
+
- vendor/jar-dependencies/org/lz4/lz4-java/1.8.0/lz4-java-1.8.0.jar
|
|
274
254
|
- vendor/jar-dependencies/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar
|
|
275
|
-
- vendor/jar-dependencies/org/xerial/snappy/snappy-java/1.1.10.
|
|
276
|
-
|
|
277
|
-
homepage: https://www.elastic.co/logstash
|
|
255
|
+
- vendor/jar-dependencies/org/xerial/snappy/snappy-java/1.1.10.7/snappy-java-1.1.10.7.jar
|
|
256
|
+
homepage: http://www.elastic.co/guide/en/logstash/current/index.html
|
|
278
257
|
licenses:
|
|
279
258
|
- Apache-2.0
|
|
280
259
|
metadata:
|
|
@@ -302,6 +281,7 @@ summary: Integration with Kafka - input and output plugins
|
|
|
302
281
|
test_files:
|
|
303
282
|
- spec/check_docs_spec.rb
|
|
304
283
|
- spec/fixtures/jaas.config
|
|
284
|
+
- spec/fixtures/jaas3.config
|
|
305
285
|
- spec/fixtures/pwd
|
|
306
286
|
- spec/fixtures/trust-store_stub.jks
|
|
307
287
|
- spec/integration/inputs/kafka_spec.rb
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
data/vendor/jar-dependencies/com/fasterxml/jackson/core/jackson-core/2.16.0/jackson-core-2.16.0.jar
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
data/vendor/jar-dependencies/com/google/j2objc/j2objc-annotations/2.8/j2objc-annotations-2.8.jar
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
data/vendor/jar-dependencies/io/confluent/logredactor-metrics/1.0.12/logredactor-metrics-1.0.12.jar
DELETED
|
Binary file
|
|
Binary file
|
data/vendor/jar-dependencies/org/apache/commons/commons-compress/1.28.0/commons-compress-1.28.0.jar
DELETED
|
Binary file
|
data/vendor/jar-dependencies/org/apache/commons/commons-lang3/3.18.0/commons-lang3-3.18.0.jar
DELETED
|
Binary file
|
data/vendor/jar-dependencies/org/checkerframework/checker-qual/3.33.0/checker-qual-3.33.0.jar
DELETED
|
Binary file
|
|
Binary file
|