Search code examples
spring-bootdocker-composerabbitmqspring-cloud

RabbitMq Cannot send message from one service to another in Spring Boot Microservices


I have a problem about sending message from advertisement service to report service through RabbitMq.

I run the rabbitmq through docker. Here is the code shown below.

rabbitmq:
    image: "rabbitmq:3-management"
    container_name: "rmq3"
    environment:
      RABBITMQ_DEFAULT_USER: "rabbitmq"
      RABBITMQ_DEFAULT_PASS: "123456"
    ports:
      - "5672:5672"
      - "15672:15672"

When I tried to get message from rabbitTemplate.convertAndSend in advertisement service. I got an error in report service.

Here is the error shown below.

Caused by: org.springframework.messaging.converter.MessageConversionException: Cannot convert from [[B] to [com.springbootmicroservices.report.dto.AdvertisementDto] for GenericMessage [payload=byte[59], headers={amqp_receivedDeliveryMode=PERSISTENT, amqp_receivedRoutingKey=queue-advertisement, amqp_contentEncoding=UTF-8, amqp_deliveryTag=1, amqp_consumerQueue=queue-advertisement, amqp_redelivered=false, id=38ab4c7f-6de4-dbbd-6471-5ba1cf2a80bc, amqp_consumerTag=amq.ctag-d4XUFeupnFO59f5OKRwlTQ, amqp_lastInBatch=false, contentType=application/json, __TypeId__=com.springbootmicroservices.advertisement.dto.AdvertisementDto, timestamp=1659551606120}]

How can I fix the issue?

Here is my project link : Link


Solution

  • After I defined both this bean in advertisement and report service, the issue disappeared. Here is the bean

    @Bean
    public MessageConverter jsonMessageConverter(ObjectMapper objectMapper) {
       return new Jackson2JsonMessageConverter(objectMapper);
    }