본문 바로가기
Error

java.lang.IllegalArgumentException: SimpleMessageConverter only supports String, byte[] and Serializable payloads, received: com.backend.curriculum.rabbitMq.TransferRequest

by YoonJong 2025. 4. 4.
728x90

에러내용

java.lang.IllegalArgumentException: SimpleMessageConverter only supports String, byte[] and Serializable payloads, received: com.backend.curriculum.rabbitMq.TransferRequest

 

에러원인

- RabbitMQ에서 메시지를 전송할 때 사용하는 기본 MessageConverterTransferRequest 객체를 처리할 수 없어서 발생
- TransferRequest를 RabbitMQ가 이해할 수 있는 형식으로 변환하거나, 적절한 MessageConverter를 설정
 

 

해결방법

RabbitMqConfig.class (AS-IS)
@Configuration
public class RabbitMQConfig {

    public static final String TRANSFER_QUEUE = "transfer_queue";

    @Bean // 큐 정의
    public Queue transferQueue() {
        // durable: true로 영속성 보장
        return new Queue(TRANSFER_QUEUE, true);
    }
}

 

RabbitMqConfig.class (TO-BE)

@Configuration
public class RabbitMQConfig {

    public static final String TRANSFER_QUEUE = "transfer_queue";

    @Bean // 큐 정의
    public Queue transferQueue() {
        // durable: true로 영속성 보장
        return new Queue(TRANSFER_QUEUE, true);
    }

    @Bean // JSON 메시지 컨버터 설정
    public Jackson2JsonMessageConverter messageConverter() {
        return new Jackson2JsonMessageConverter();
    }

    @Bean // RabbitTemplate에 컨버터 적용
    public RabbitTemplate rabbitTemplate(org.springframework.amqp.rabbit.connection.ConnectionFactory connectionFactory) {
        RabbitTemplate template = new RabbitTemplate(connectionFactory);
        template.setMessageConverter(messageConverter());
        return template;
    }
}
728x90

댓글