Farfetch/kafkaflow

[Feature Request]: DefaultTypeResolver caching

adambajguz opened this issue · 1 comments

Is your request related to a problem you have?

I think adding a cache in DefaultTypeResolver can improve performance and memoery allocations.

Describe the solution you'd like

private readonly ConcurrentDictionary<string, Type> _consumeTypeCache = new(StringComparer.Ordinal);
private readonly ConcurrentDictionary<Type, string> _produceTypeCache = new();

(...)
return typeName is null ?
   null :
   _consumeTypeCache.GetOrAdd(typeName, Type.GetType);

(...)

string messageTypeName = _produceTypeCache.GetOrAdd(
    messageType,
    static messageType => $"{messageType.FullName}, {messageType.Assembly.GetName().Name}");

context.Headers.SetString(MessageType, messageTypeName);

Are you able to help bring it to life and contribute with a Pull Request?

Yes

Additional context

No response

Also why DefaultTypeResolver is basically a transient dependency?