The Author Online Book Forums are Moving

The Author Online Book Forums will soon redirect to Manning's liveBook and liveVideo. All book forum content will migrate to liveBook's discussion forum and all video forum content will migrate to liveVideo. Log in to liveBook or liveVideo with your Manning credentials to join the discussion!

Thank you for your engagement in the AoF over the years! We look forward to offering you a more enhanced forum experience.

shetc (31) [Avatar] Offline
If I try Listing 3.2 (Mapping incoming text to uppercase)

KStream<String, String> upperCasedStream = [CA]simpleFirstStream.mapValues(String::toUpperCase);

with kafka-streams-2.0.0, it produces the error:

The method mapValues(ValueMapper<? super String,? extends String>) is ambiguous for the type KStream<String,String>

This appears to work:

        KStream<String, String> upperCasedStream = simpleFirstStream.mapValues(new ValueMapper<String, String>() {
            public String apply(String value) {
                return value.toUpperCase();

Also, this constructor is deprecated:
StreamsConfig streamsConfig = new StreamsConfig(props);
KafkaStreams kafkaStreams = new KafkaStreams(, streamsConfig);

This is not:

KafkaStreams kafkaStreams = new KafkaStreams(, props);

Bill Bejeck (47) [Avatar] Offline
Hi Shetc,

Thanks for commenting. The code for the book is version 1.0.0. Since the 1.0.0 release, there have been some changes, including depreciation of some methods.

For ambiguous compiler issue, mapValues now accepts a ValueMapper that accepts either the value by itself or a key and value for modifying the value. Thus using a method handle give an ambiguous compiler error. In 2.0 you won't be able to use method handles anymore for mapValues and you'll need to do either (k, v) -> .... or (v) -> .....



shetc (31) [Avatar] Offline
Hi Bill,

Thanks for the response. I'm just starting a project where we want to use Kafka Streams, but in a fairly simplistic way just to get our feet wet. WIll reverting back to version 1 be an issue?