rabbitmq序列化

JacksonMessageConverter
package com.hainei.config;

/**
 * @author: wq
 * @date: 2024-04-08 17:30
 * @description:
 */
import org.springframework.amqp.core.Message;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;

public class JacksonMessageConverter extends Jackson2JsonMessageConverter {
    public JacksonMessageConverter() {
        super();
    }

    @Override
    public Object fromMessage(Message message) {
        message.getMessageProperties().setContentType("application/json");
        return super.fromMessage(message);
    }
}
View Code
RabbitConfig
package com.hainei.config;

import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
/**
 * @author: wq
 * @date: 2024-04-08 16:39
 * @description:
 */


@Configuration
public class RabbitConfig {
    @Bean
    public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
        RabbitTemplate template = new RabbitTemplate();
        template.setConnectionFactory(connectionFactory);
        template.setMessageConverter(new Jackson2JsonMessageConverter());
        return template;
    }

    /**
     * template.setMessageConverter(new Jackson2JsonMessageConverter());
     * 这段和上面这行代码解决RabbitListener循环报错的问题
     */
    @Bean
    public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory) {
        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setMessageConverter(new JacksonMessageConverter());
        return factory;
    }
}
View Code

 消费端也可以直接设置contentType

package com.hainei.consumer;

import com.hainei.constant.RabbitConstant;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.*;
import org.springframework.stereotype.Component;
import java.util.Map;

/**
 * @author admin
 */
@Component
public class RabbitReceiver {

    @RabbitListener(queues = RabbitConstant.CanalQueue)
    @RabbitHandler
    public void process(Message msg) {
        msg.getMessageProperties().setContentType("application/json");
        System.out.println(msg);
    }


}
View Code

 

posted @ 2024-04-08 17:42  wq9  阅读(7)  评论(0)    收藏  举报