【问题标题】:Java Message Object Enum Spring integration ErrorJava消息对象枚举Spring集成错误
【发布时间】:2018-07-30 17:04:03
【问题描述】:

我有课

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){

    A atype = (A) message.getHeaders().get("AType");
    logger.info("RECEIVED ENUM data is-->> "+atype);
}

以上部分出错了。 NonTrustedHeaderType

对于 Spring Kafka Headers 中的枚举概念,我不清楚。但我正在学习。非常感激。谢谢。

【问题讨论】:

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


    【解决方案1】:

    NonTrustedHeaderType 表示您无法信任您的 Enum 所在的包。

    Reference Manual查看更多信息:

    默认情况下,映射器只会反序列化java.langjava.util 中的类。您可以通过使用addTrustedPackages 方法添加受信任的包来信任其他(或所有)包。如果您从不受信任的来源接收消息,您可能希望仅添加您信任的那些包。要信任所有包,请使用mapper.addTrustedPackages("*")

    Spring Boot 角度来看,还有一个适当的配置属性:

    spring.kafka.consumer.properties.spring.json.trusted.packages=com.example,org.acme

    【讨论】:

      【解决方案2】:

      我相信您需要将其添加到受信任的标头名称中。例如,请参阅 spring.cloud.stream.kafka.binder.headerMapperBeanName binder 属性以指向 DefaultKafkaHeaderMapper bean 的实例。

      【讨论】:

        猜你喜欢
        • 2020-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多