自定義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());