【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());
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章