Class KafkaDynamicProducerEndpointResolver<TMessage>
- Namespace
- Silverback.Messaging.Producing.EndpointResolvers
- Assembly
- Silverback.Integration.Kafka.dll
Dynamically resolves the target topic and partition for each message being produced.
public sealed record KafkaDynamicProducerEndpointResolver<TMessage> : DynamicProducerEndpointResolver<TMessage, KafkaProducerEndpoint, KafkaProducerEndpointConfiguration>, IDynamicProducerEndpointResolver<KafkaProducerEndpoint>, IDynamicProducerEndpointResolver, IProducerEndpointResolver<KafkaProducerEndpoint>, IProducerEndpointResolver, IEquatable<DynamicProducerEndpointResolver<TMessage, KafkaProducerEndpoint, KafkaProducerEndpointConfiguration>>, IEquatable<KafkaDynamicProducerEndpointResolver<TMessage>> where TMessage : class
Type Parameters
TMessageThe type of the message being produced.
- Inheritance
-
DynamicProducerEndpointResolver<TMessage, KafkaProducerEndpoint, KafkaProducerEndpointConfiguration>KafkaDynamicProducerEndpointResolver<TMessage>
- Implements
-
IEquatable<DynamicProducerEndpointResolver<TMessage, KafkaProducerEndpoint, KafkaProducerEndpointConfiguration>>IEquatable<KafkaDynamicProducerEndpointResolver<TMessage>>
- Inherited Members
Constructors
KafkaDynamicProducerEndpointResolver(Func<IOutboundEnvelope<TMessage>, TopicPartition>)
Initializes a new instance of the KafkaDynamicProducerEndpointResolver<TMessage> class.
public KafkaDynamicProducerEndpointResolver(Func<IOutboundEnvelope<TMessage>, TopicPartition> topicPartitionFunction)
Parameters
topicPartitionFunctionFunc<IOutboundEnvelope<TMessage>, TopicPartition>The function returning the target topic and partition index for the message being produced.
KafkaDynamicProducerEndpointResolver(Func<IOutboundEnvelope<TMessage>, string>)
Initializes a new instance of the KafkaDynamicProducerEndpointResolver<TMessage> class.
public KafkaDynamicProducerEndpointResolver(Func<IOutboundEnvelope<TMessage>, string> topicFunction)
Parameters
topicFunctionFunc<IOutboundEnvelope<TMessage>, string>The function returning the target topic for the message being produced.
KafkaDynamicProducerEndpointResolver(Func<IOutboundEnvelope<TMessage>, string>, Func<IOutboundEnvelope<TMessage>, int>)
Initializes a new instance of the KafkaDynamicProducerEndpointResolver<TMessage> class.
public KafkaDynamicProducerEndpointResolver(Func<IOutboundEnvelope<TMessage>, string> topicFunction, Func<IOutboundEnvelope<TMessage>, int> partitionFunction)
Parameters
topicFunctionFunc<IOutboundEnvelope<TMessage>, string>The function returning the target topic for the message being produced.
partitionFunctionFunc<IOutboundEnvelope<TMessage>, int>The function returning the target partition index for the message being produced.
KafkaDynamicProducerEndpointResolver(Func<TMessage?, TopicPartition>)
Initializes a new instance of the KafkaDynamicProducerEndpointResolver<TMessage> class.
public KafkaDynamicProducerEndpointResolver(Func<TMessage?, TopicPartition> topicPartitionFunction)
Parameters
topicPartitionFunctionFunc<TMessage, TopicPartition>The function returning the target topic and partition index for the message being produced.
KafkaDynamicProducerEndpointResolver(Func<TMessage?, string>)
Initializes a new instance of the KafkaDynamicProducerEndpointResolver<TMessage> class.
public KafkaDynamicProducerEndpointResolver(Func<TMessage?, string> topicFunction)
Parameters
topicFunctionFunc<TMessage, string>The function returning the target topic for the message being produced.
KafkaDynamicProducerEndpointResolver(Func<TMessage?, string>, Func<TMessage?, int>)
Initializes a new instance of the KafkaDynamicProducerEndpointResolver<TMessage> class.
public KafkaDynamicProducerEndpointResolver(Func<TMessage?, string> topicFunction, Func<TMessage?, int> partitionFunction)
Parameters
topicFunctionFunc<TMessage, string>The function returning the target topic for the message being produced.
partitionFunctionFunc<TMessage, int>The function returning the target partition index for the message being produced.
KafkaDynamicProducerEndpointResolver(string, Func<IOutboundEnvelope<TMessage>, int>)
Initializes a new instance of the KafkaDynamicProducerEndpointResolver<TMessage> class.
public KafkaDynamicProducerEndpointResolver(string topic, Func<IOutboundEnvelope<TMessage>, int> partitionFunction)
Parameters
topicstringThe target topic.
partitionFunctionFunc<IOutboundEnvelope<TMessage>, int>The function returning the target partition index for the message being produced.
KafkaDynamicProducerEndpointResolver(string, Func<IOutboundEnvelope<TMessage>, string[]>, Func<IOutboundEnvelope<TMessage>, int>?)
Initializes a new instance of the KafkaDynamicProducerEndpointResolver<TMessage> class.
public KafkaDynamicProducerEndpointResolver(string topicFormatString, Func<IOutboundEnvelope<TMessage>, string[]> topicArgumentsFunction, Func<IOutboundEnvelope<TMessage>, int>? partitionFunction = null)
Parameters
topicFormatStringstringThe topic format string that will be combined with the arguments returned by the
topicArgumentsFunctionusing a Format(string, params object[]).topicArgumentsFunctionFunc<IOutboundEnvelope<TMessage>, string[]>The function returning the arguments to be used to format the string.
partitionFunctionFunc<IOutboundEnvelope<TMessage>, int>The optional function returning the target partition index for the message being produced. If
nullthe partition is automatically derived from the message key (use KafkaKeyMemberAttribute to specify a message key, otherwise a random one will be generated).
KafkaDynamicProducerEndpointResolver(string, Func<TMessage?, int>)
Initializes a new instance of the KafkaDynamicProducerEndpointResolver<TMessage> class.
public KafkaDynamicProducerEndpointResolver(string topic, Func<TMessage?, int> partitionFunction)
Parameters
topicstringThe target topic.
partitionFunctionFunc<TMessage, int>The function returning the target partition index for the message being produced.
KafkaDynamicProducerEndpointResolver(string, Func<TMessage?, string[]>, Func<TMessage?, int>?)
Initializes a new instance of the KafkaDynamicProducerEndpointResolver<TMessage> class.
public KafkaDynamicProducerEndpointResolver(string topicFormatString, Func<TMessage?, string[]> topicArgumentsFunction, Func<TMessage?, int>? partitionFunction = null)
Parameters
topicFormatStringstringThe topic format string that will be combined with the arguments returned by the
topicArgumentsFunctionusing a Format(string, params object[]).topicArgumentsFunctionFunc<TMessage, string[]>The function returning the arguments to be used to format the string.
partitionFunctionFunc<TMessage, int>The optional function returning the target partition index for the message being produced. If
nullthe partition is automatically derived from the message key (use KafkaKeyMemberAttribute to specify a message key, otherwise a random one will be generated).
Properties
EqualityContract
protected override Type EqualityContract { get; }
Property Value
Methods
DeserializeEndpoint(string, KafkaProducerEndpointConfiguration)
Deserializes the endpoint from a string.
protected override KafkaProducerEndpoint DeserializeEndpoint(string serializedEndpoint, KafkaProducerEndpointConfiguration configuration)
Parameters
serializedEndpointstringThe serialized endpoint.
configurationKafkaProducerEndpointConfigurationThe endpoint configuration.
Returns
- KafkaProducerEndpoint
The deserialized endpoint.
Equals(DynamicProducerEndpointResolver<TMessage, KafkaProducerEndpoint, KafkaProducerEndpointConfiguration>?)
public override sealed bool Equals(DynamicProducerEndpointResolver<TMessage, KafkaProducerEndpoint, KafkaProducerEndpointConfiguration>? other)
Parameters
otherDynamicProducerEndpointResolver<TMessage, KafkaProducerEndpoint, KafkaProducerEndpointConfiguration>
Returns
Equals(KafkaDynamicProducerEndpointResolver<TMessage>?)
public bool Equals(KafkaDynamicProducerEndpointResolver<TMessage>? other)
Parameters
otherKafkaDynamicProducerEndpointResolver<TMessage>
Returns
Equals(object?)
public override bool Equals(object? obj)
Parameters
objobject
Returns
GetEndpointCore(IOutboundEnvelope<TMessage>, KafkaProducerEndpointConfiguration)
Gets the computed actual destination endpoint for the message being produced.
protected override KafkaProducerEndpoint GetEndpointCore(IOutboundEnvelope<TMessage> envelope, KafkaProducerEndpointConfiguration configuration)
Parameters
envelopeIOutboundEnvelope<TMessage>The envelope containing the message to be produced.
configurationKafkaProducerEndpointConfigurationThe endpoint configuration.
Returns
- KafkaProducerEndpoint
The ProducerEndpoint for the specified message.
GetHashCode()
public override int GetHashCode()
Returns
PrintMembers(StringBuilder)
protected override bool PrintMembers(StringBuilder builder)
Parameters
builderStringBuilder
Returns
SerializeEndpoint(KafkaProducerEndpoint)
Serializes the endpoint to a string.
protected override string SerializeEndpoint(KafkaProducerEndpoint endpoint)
Parameters
endpointKafkaProducerEndpointThe endpoint to be serialized.
Returns
- string
The serialized endpoint.
ToString()
public override string ToString()
Returns
Operators
operator ==(KafkaDynamicProducerEndpointResolver<TMessage>?, KafkaDynamicProducerEndpointResolver<TMessage>?)
public static bool operator ==(KafkaDynamicProducerEndpointResolver<TMessage>? left, KafkaDynamicProducerEndpointResolver<TMessage>? right)
Parameters
leftKafkaDynamicProducerEndpointResolver<TMessage>rightKafkaDynamicProducerEndpointResolver<TMessage>
Returns
operator !=(KafkaDynamicProducerEndpointResolver<TMessage>?, KafkaDynamicProducerEndpointResolver<TMessage>?)
public static bool operator !=(KafkaDynamicProducerEndpointResolver<TMessage>? left, KafkaDynamicProducerEndpointResolver<TMessage>? right)
Parameters
leftKafkaDynamicProducerEndpointResolver<TMessage>rightKafkaDynamicProducerEndpointResolver<TMessage>