Currently the InMemoryKeyValueStore is only able to use the key and value serializers and deserializers (aka, "serdes") from the ProcessingContext. This means that a Processor implementation that wants to use the InMemoryKeyValueStore can only do this if the key and value types match those set up as the default serdes in the topology's configuration.
Additionally, the RocksDBKeyValueStore is only capable of byte keys and values.
Both of these key-value stores should allow the component using them to specify the serdes for both the keys and values. As a convenience, the current behavior should still be supported, as should a way to infer the serdes for the "built-in" serializers and deserializers (e.g., strings, integers, longs, and byte arrays).