0
저는 제작자와 소비자 마이크로 서비스간에 메시지를 교환하기 위해 스프링 클라우드 스트림 (kafka)을 사용하고 있습니다. 네이티브 java 직렬화와 데이터를 교환합니다. 스프링 클라우드 문서에 따라 JSON, AVRO 직렬화를 지원합니다. 직렬 클라우드 스트림 (kafka)을 사용하여 직렬화로 protobuf를 사용하는 방법
어느 한 봄 클라우드 스트림에 protobuf 직렬화 (메시지 컨버터를) 시도가---------------- 나중에 추가 내가이는 MessageConverter를 썼다
public class ProtobufMessageConverter<T extends AbstractMessage > extends AbstractMessageConverter
{
private Parser<T> parser;
public ProtobufMessageConverter(Parser<T> parser)
{
super(new MimeType("application", "protobuf"));
this.parser = parser;
}
@Override
protected boolean supports(Class<?> clazz)
{
if (clazz != null)
{
return EquipmentProto.Equipment.class.isAssignableFrom(clazz);
}
return true;
}
@Override
public Object convertFromInternal(Message<?> message, Class<?> targetClass, Object conversionHint)
{
if (!(message.getPayload() instanceof byte[]))
{
return null;
}
try
{
// return EquipmentProto.Equipment.parseFrom((byte[]) message.getPayload());
return parser.parseFrom((byte[]) message.getPayload());
}
catch (Exception e)
{
this.logger.error(e.getMessage(), e);
}
return null;
}
@Override
protected Object convertToInternal(Object payload, MessageHeaders headers, Object conversionHint)
{
return ((AbstractMessage) payload).toByteArray();
}
}