我上课
public Enum A{
LOAN1
LOAN2
}
我按如下所示构建我的消息对象:-
@ServiceActivator(inputChannel = Processor.INPUT, outputChannel = Processor.OUTPUT)
public Message handle(Message<?> message){
Message<String> message1 = (Message<String>) MessageBuilder.fromMessage(message)
.setHeader("ID", person.getID())
.setHeader("AType",A.LOAN1)
.build();
logger.info("Enriched Header with 2nd Attribute-->> "+message1.getHeaders().get("AType"));
return message1
}
上面的代码工作正常。一切正常。
现在在我的另一个Spring Boot应用程序中,该应用程序使用KafkaTopic的message1
@ServiceActivator(inputChannel = Processor.INPUT)
public Message handle2(Message<?> message){
Enum atype= (Enum) message.getHeaders().get("AType");
logger.info("RECEIVED ENUM data is-->> "+atype);
}
以上部分错误。 NonTrustedHeaderType
关于枚举概念的不清楚,我需要多少Spring Kafka标头。但我正在学习。非常感激。谢谢。
答案 0 :(得分:2)
NonTrustedHeaderType
意味着您无法信任Enum
所在的包裹。
在Reference Manual中查看更多信息:
默认情况下,映射器将仅反序列化
java.lang
和java.util
中的类。您可以使用addTrustedPackages
方法添加受信任的软件包来信任其他(或所有)软件包。如果您收到来自不受信任来源的消息,则可能希望仅添加您信任的那些程序包。要信任所有软件包,请使用mapper.addTrustedPackages("*")
。
从Spring Boot角度来看,还有一个适当的配置属性:
spring.kafka.consumer.properties.spring.json.trusted.packages = com.example,org.acme
答案 1 :(得分:1)
我相信您需要将其添加到受信任的标头名称中。例如,请参见spring.cloud.stream.kafka.binder.headerMapperBeanName活页夹属性以指向DefaultKafkaHeaderMapper
bean的实例。