Java消息对象枚举Spring集成错误

时间:2018-07-30 17:04:03

标签: java spring spring-boot spring-integration spring-kafka

我上课

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标头。但我正在学习。非常感激。谢谢。

2 个答案:

答案 0 :(得分:2)

NonTrustedHeaderType意味着您无法信任Enum所在的包裹。

Reference Manual中查看更多信息:

  

默认情况下,映射器将仅反序列化java.langjava.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的实例。