Class ConfluentProducerConfigProxy
Wraps the Confluent.Kafka.ProducerConfig.
Implements
Inherited Members
Namespace: Silverback.Messaging.Configuration.Kafka
Assembly: Silverback.Integration.Kafka.dll
Syntax
public abstract class ConfluentProducerConfigProxy : ConfluentClientConfigProxy, IValidatableEndpointSettings
Constructors
| Improve this doc View sourceConfluentProducerConfigProxy(ClientConfig?)
Initializes a new instance of the ConfluentProducerConfigProxy class.
Declaration
protected ConfluentProducerConfigProxy(ClientConfig? clientConfig = null)
Parameters
Type | Name | Description |
---|---|---|
ClientConfig | clientConfig | The Confluent.Kafka.ClientConfig to be used to initialize the Confluent.Kafka.ProducerConfig. |
Properties
| Improve this doc View sourceBatchNumMessages
Maximum number of messages batched in one MessageSet. The total MessageSet size is also limited by batch.size and message.max.bytes.
default: 10000
importance: medium
Declaration
public int? BatchNumMessages { get; set; }
Property Value
Type | Description |
---|---|
int? |
BatchSize
Maximum size (in bytes) of all messages batched in one MessageSet, including protocol framing overhead. This limit is applied after the first message has been added to the batch, regardless of the first message's size, this is to ensure that messages that exceed batch.size are produced. The total MessageSet size is also limited by batch.num.messages and message.max.bytes.
default: 1000000
importance: medium
Declaration
public int? BatchSize { get; set; }
Property Value
Type | Description |
---|---|
int? |
CompressionLevel
Compression level parameter for algorithm selected by configuration property compression.codec
. Higher values will result in better compression at the cost of more CPU usage. Usable range is algorithm-dependent: [0-9] for gzip; [0-12] for lz4; only 0 for snappy; -1 = codec-dependent default compression level.
default: -1
importance: medium
Declaration
public int? CompressionLevel { get; set; }
Property Value
Type | Description |
---|---|
int? |
CompressionType
compression codec to use for compressing message sets. This is the default value for all topics, may be overridden by the topic configuration property compression.codec
.
default: none
importance: medium
Declaration
public CompressionType? CompressionType { get; set; }
Property Value
Type | Description |
---|---|
CompressionType? |
ConfluentConfig
Gets the Confluent.Kafka.ClientConfig instance being wrapped.
Declaration
protected ProducerConfig ConfluentConfig { get; }
Property Value
Type | Description |
---|---|
ProducerConfig |
DeliveryReportFields
A comma separated list of fields that may be optionally set in delivery
reports. Disabling delivery report fields that you do not require will
improve maximum throughput and reduce memory usage. Allowed values:
key, value, timestamp, headers, status, all, none.
default: all
importance: low
Declaration
public string DeliveryReportFields { get; set; }
Property Value
Type | Description |
---|---|
string |
Remarks
Silverback overrides this value by default setting it to "key,status" as an optimization, since the other fields aren't used.
EnableBackgroundPoll
Specifies whether or not the producer should start a background poll
thread to receive delivery reports and event notifications. Generally,
this should be set to true. If set to false, you will need to call
the Poll function manually.
default: true
importance: low
Declaration
public bool? EnableBackgroundPoll { get; set; }
Property Value
Type | Description |
---|---|
bool? |
EnableDeliveryReports
Specifies whether to enable notification of delivery reports. Typically
you should set this parameter to true. Set it to false for "fire and
forget" semantics and a small boost in performance.
default: true
importance: low
Declaration
public bool? EnableDeliveryReports { get; set; }
Property Value
Type | Description |
---|---|
bool? |
EnableGaplessGuarantee
EXPERIMENTAL: subject to change or removal. When set to true
, any error that could result in a gap in the produced message series when a batch of messages fails, will raise a fatal error (ERR__GAPLESS_GUARANTEE) and stop the producer. Messages failing due to message.timeout.ms
are not covered by this guarantee. Requires enable.idempotence=true
.
default: false
importance: low
Declaration
public bool? EnableGaplessGuarantee { get; set; }
Property Value
Type | Description |
---|---|
bool? |
EnableIdempotence
When set to true
, the producer will ensure that messages are successfully produced exactly once and in the original produce order. The following configuration properties are adjusted automatically (if not modified by the user) when idempotence is enabled: max.in.flight.requests.per.connection=5
(must be less than or equal to 5), retries=INT32_MAX
(must be greater than 0), acks=all
, queuing.strategy=fifo
. Producer instantation will fail if user-supplied configuration is incompatible.
default: false
importance: high
Declaration
public bool? EnableIdempotence { get; set; }
Property Value
Type | Description |
---|---|
bool? |
LingerMs
Delay in milliseconds to wait for messages in the producer queue to accumulate before constructing message batches (MessageSets) to transmit to brokers. A higher value allows larger and more effective (less overhead, improved compression) batches of messages to accumulate at the expense of increased message delivery latency.
default: 5
importance: high
Declaration
public double? LingerMs { get; set; }
Property Value
Type | Description |
---|---|
double? |
MessageSendMaxRetries
How many times to retry sending a failing Message. Note: retrying may cause reordering unless enable.idempotence
is set to true.
default: 2147483647
importance: high
Declaration
public int? MessageSendMaxRetries { get; set; }
Property Value
Type | Description |
---|---|
int? |
MessageTimeoutMs
Local message timeout. This value is only enforced locally and limits the time a produced message waits for successful delivery. A time of 0 is infinite. This is the maximum time librdkafka may use to deliver a message (including retries). Delivery error occurs when either the retry count or the message timeout are exceeded. The message timeout is automatically adjusted to transaction.timeout.ms
if transactional.id
is configured.
default: 300000
importance: high
Declaration
public int? MessageTimeoutMs { get; set; }
Property Value
Type | Description |
---|---|
int? |
Partitioner
Partitioner: random
- random distribution, consistent
- CRC32 hash of key (Empty and NULL keys are mapped to single partition), consistent_random
- CRC32 hash of key (Empty and NULL keys are randomly partitioned), murmur2
- Java Producer compatible Murmur2 hash of key (NULL keys are mapped to single partition), murmur2_random
- Java Producer compatible Murmur2 hash of key (NULL keys are randomly partitioned. This is functionally equivalent to the default partitioner in the Java Producer.), fnv1a
- FNV-1a hash of key (NULL keys are mapped to single partition), fnv1a_random
- FNV-1a hash of key (NULL keys are randomly partitioned).
default: consistent_random
importance: high
Declaration
public Partitioner? Partitioner { get; set; }
Property Value
Type | Description |
---|---|
Partitioner? |
QueueBufferingBackpressureThreshold
The threshold of outstanding not yet transmitted broker requests needed to backpressure the producer's message accumulator. If the number of not yet transmitted requests equals or exceeds this number, produce request creation that would have otherwise been triggered (for example, in accordance with linger.ms) will be delayed. A lower number yields larger and more effective batches. A higher value can improve latency when using compression on slow machines.
default: 1
importance: low
Declaration
public int? QueueBufferingBackpressureThreshold { get; set; }
Property Value
Type | Description |
---|---|
int? |
QueueBufferingMaxKbytes
Maximum total message size sum allowed on the producer queue. This queue is shared by all topics and partitions. This property has higher priority than queue.buffering.max.messages.
default: 1048576
importance: high
Declaration
public int? QueueBufferingMaxKbytes { get; set; }
Property Value
Type | Description |
---|---|
int? |
QueueBufferingMaxMessages
Maximum number of messages allowed on the producer queue. This queue is shared by all topics and partitions. A value of 0 disables this limit.
default: 100000
importance: high
Declaration
public int? QueueBufferingMaxMessages { get; set; }
Property Value
Type | Description |
---|---|
int? |
RequestTimeoutMs
The ack timeout of the producer request in milliseconds. This value is only enforced by the broker and relies on request.required.acks
being != 0.
default: 30000
importance: medium
Declaration
public int? RequestTimeoutMs { get; set; }
Property Value
Type | Description |
---|---|
int? |
RetryBackoffMaxMs
The max backoff time in milliseconds before retrying a protocol request, this is the atmost backoff allowed for exponentially backed off requests.
default: 1000
importance: medium
Declaration
public int? RetryBackoffMaxMs { get; set; }
Property Value
Type | Description |
---|---|
int? |
RetryBackoffMs
The backoff time in milliseconds before retrying a protocol request, this is the first backoff time, and will be backed off exponentially until number of retries is exhausted, and it's capped by retry.backoff.max.ms.
default: 100
importance: medium
Declaration
public int? RetryBackoffMs { get; set; }
Property Value
Type | Description |
---|---|
int? |
StickyPartitioningLingerMs
Delay in milliseconds to wait to assign new sticky partitions for each topic. By default, set to double the time of linger.ms. To disable sticky behavior, set to 0. This behavior affects messages with the key NULL in all cases, and messages with key lengths of zero when the consistent_random partitioner is in use. These messages would otherwise be assigned randomly. A higher value allows for more effective batching of these messages.
default: 10
importance: low
Declaration
public int? StickyPartitioningLingerMs { get; set; }
Property Value
Type | Description |
---|---|
int? |
TransactionTimeoutMs
The maximum amount of time in milliseconds that the transaction coordinator will wait for a transaction status update from the producer before proactively aborting the ongoing transaction. If this value is larger than the transaction.max.timeout.ms
setting in the broker, the init_transactions() call will fail with ERR_INVALID_TRANSACTION_TIMEOUT. The transaction timeout automatically adjusts message.timeout.ms
and socket.timeout.ms
, unless explicitly configured in which case they must not exceed the transaction timeout (socket.timeout.ms
must be at least 100ms lower than transaction.timeout.ms
). This is also the default timeout value if no timeout (-1) is supplied to the transactional API methods.
default: 60000
importance: medium
Declaration
public int? TransactionTimeoutMs { get; set; }
Property Value
Type | Description |
---|---|
int? |
TransactionalId
Enables the transactional producer. The transactional.id is used to identify the same transactional producer instance across process restarts. It allows the producer to guarantee that transactions corresponding to earlier instances of the same producer have been finalized prior to starting any new transactions, and that any zombie instances are fenced off. If no transactional.id is provided, then the producer is limited to idempotent delivery (if enable.idempotence is set). Requires broker version >= 0.11.0.
default: ''
importance: high
Declaration
public string TransactionalId { get; set; }
Property Value
Type | Description |
---|---|
string |