Skip to content

Commit ae3626a

Browse files
authored
fix: CastClassException in PubSubDeadLetterTopicSampleAppIntegrationTest #3139 (#3145)
* fix: Added object mapper bean to fix issue with spring cloud stream 4.1.3 failing to deserialize objects (spring-cloud/spring-cloud-stream#2977) causing pubsub steam dead letter and functional sample test to fail
1 parent 20b3393 commit ae3626a

File tree

2 files changed

+22
-0
lines changed
  • spring-cloud-gcp-samples
    • spring-cloud-gcp-pubsub-stream-dead-letter-sample/src/main/java/com/example
    • spring-cloud-gcp-pubsub-stream-functional-sample/spring-cloud-gcp-pubsub-stream-functional-sample-sink/src/main/java/com/example

2 files changed

+22
-0
lines changed

spring-cloud-gcp-samples/spring-cloud-gcp-pubsub-stream-dead-letter-sample/src/main/java/com/example/SinkExample.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@
1616

1717
package com.example;
1818

19+
import com.fasterxml.jackson.databind.ObjectMapper;
1920
import com.google.cloud.pubsub.v1.Subscriber;
2021
import com.google.cloud.spring.pubsub.support.BasicAcknowledgeablePubsubMessage;
2122
import com.google.cloud.spring.pubsub.support.GcpPubSubHeaders;
2223
import java.util.function.Consumer;
2324
import org.slf4j.Logger;
2425
import org.slf4j.LoggerFactory;
26+
import org.springframework.cloud.function.context.config.JsonMessageConverter;
27+
import org.springframework.cloud.function.json.JacksonMapper;
2528
import org.springframework.context.annotation.Bean;
2629
import org.springframework.context.annotation.Configuration;
2730
import org.springframework.messaging.Message;
@@ -63,4 +66,12 @@ public Consumer<UserMessage> deadLetterMessages() {
6366
userMessage.getUsername(),
6467
userMessage.getBody());
6568
}
69+
70+
// This is workaround for https://github.com/GoogleCloudPlatform/spring-cloud-gcp/issues/3139
71+
// and should be removed once fix https://github.com/spring-cloud/spring-cloud-function/pull/1162
72+
// is deployed
73+
@Bean
74+
public JsonMessageConverter customJsonMessageConverter(ObjectMapper objectMapper) {
75+
return new JsonMessageConverter(new JacksonMapper(objectMapper));
76+
}
6677
}

spring-cloud-gcp-samples/spring-cloud-gcp-pubsub-stream-functional-sample/spring-cloud-gcp-pubsub-stream-functional-sample-sink/src/main/java/com/example/Sink.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,12 @@
1717
package com.example;
1818

1919
import com.example.model.UserMessage;
20+
import com.fasterxml.jackson.databind.ObjectMapper;
2021
import java.util.function.Consumer;
2122
import org.apache.commons.logging.Log;
2223
import org.apache.commons.logging.LogFactory;
24+
import org.springframework.cloud.function.context.config.JsonMessageConverter;
25+
import org.springframework.cloud.function.json.JacksonMapper;
2326
import org.springframework.context.annotation.Bean;
2427
import org.springframework.context.annotation.Configuration;
2528

@@ -42,4 +45,12 @@ public Consumer<UserMessage> logUserMessage() {
4245
userMessage.getUsername(), userMessage.getBody(), userMessage.getCreatedAt()));
4346
};
4447
}
48+
49+
// This is workaround for https://github.com/GoogleCloudPlatform/spring-cloud-gcp/issues/3139
50+
// and should be removed once fix https://github.com/spring-cloud/spring-cloud-function/pull/1162
51+
// is deployed
52+
@Bean
53+
public JsonMessageConverter customJsonMessageConverter(ObjectMapper objectMapper) {
54+
return new JsonMessageConverter(new JacksonMapper(objectMapper));
55+
}
4556
}

0 commit comments

Comments
 (0)