【RabbitMQ】RabbitMQ如何使用Protobuf

自定义Converter

继承AbstractMessageConverter,代码如下:

public class ProtobufMessageConverter extends AbstractMessageConverter {
    /**
     * object转换为ProtoBuf, 发送消息
     */
    @Override
    public Message createMessage(Object object, MessageProperties messageProperties) {
        System.out.println("发送转换的消息");
        PersonTest person = (PersonTest)object;
        return new Message(person.toByteArray(), messageProperties);
    }

    @Override
    public Object fromMessage(Message message) throws MessageConversionException {
        System.out.println("转换消息");
        PersonTest from = null;
        try {
            from = PersonTest.parseFrom( message.getBody() );
        } catch (InvalidProtocolBufferException e) {
            e.printStackTrace();
        }
        return from;
    }

}

替换默认Converter

RabbitMQ默认使用的是Java默认的序列化规则,有两种方法替换默认的序列化

1.注册为Bean

将自定义的Converter注册为Bean,一劳永逸。

@Bean
public MessageConverter messageConverter() {
    return new ProtobufMessageConverter();
}

2.setMessageConverter

每次发送,接收都要设置

rabbitTemplate.setMessageConverter(new ProtobufMessageConverter());
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章