Skip to content

Commit 01c2a7f

Browse files
Brutus5000claude
andcommitted
Publish RabbitMQ messages as JSON instead of Java serialization
The avatar update event (and any other RabbitTemplate publish) was serialized with the default SimpleMessageConverter, producing application/x-java-serialized-object instead of JSON. The JacksonJsonMessageConverter was only wired into the listener container factory (consuming), not the auto-configured RabbitTemplate (publishing). Expose a single JacksonJsonMessageConverter bean so Spring Boot applies it to the auto-configured RabbitTemplate, and reuse it in the listener factory. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 8c8ca0e commit 01c2a7f

1 file changed

Lines changed: 15 additions & 2 deletions

File tree

src/main/java/com/faforever/api/config/RabbitConfiguration.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,16 +55,29 @@ public StatelessRetryOperationsInterceptor retryInterceptor() {
5555
* Reconfigure default Rabbit container, so it doesn't infinitely requeue.
5656
* Instead, we use a retry that does a limited requeueing.
5757
*/
58+
/**
59+
* JSON message converter used for both publishing (applied to the auto-configured
60+
* {@link org.springframework.amqp.rabbit.core.RabbitTemplate} by Spring Boot when a single
61+
* {@link org.springframework.amqp.support.converter.MessageConverter} bean is present) and consuming.
62+
* Without this, the default {@code SimpleMessageConverter} would Java-serialize outgoing payloads
63+
* ({@code application/x-java-serialized-object}) instead of producing JSON.
64+
*/
65+
@Bean
66+
public JacksonJsonMessageConverter jacksonJsonMessageConverter() {
67+
return new JacksonJsonMessageConverter();
68+
}
69+
5870
@Bean
5971
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(
6072
ConnectionFactory connectionFactory,
61-
StatelessRetryOperationsInterceptor retryInterceptor
73+
StatelessRetryOperationsInterceptor retryInterceptor,
74+
JacksonJsonMessageConverter jacksonJsonMessageConverter
6275
) {
6376
var factory = new SimpleRabbitListenerContainerFactory();
6477
factory.setDefaultRequeueRejected(false);
6578
factory.setConnectionFactory(connectionFactory);
6679
factory.setAdviceChain(retryInterceptor);
67-
factory.setMessageConverter(new JacksonJsonMessageConverter());
80+
factory.setMessageConverter(jacksonJsonMessageConverter);
6881

6982
return factory;
7083
}

0 commit comments

Comments
 (0)