当前位置: 首页 > 知识库问答 >
问题:

EvaluationContext Null与Spring集成和Kafka

穆阳炎
2023-03-14

我试图在Spring Integration中定义一个简单的消息流,它从一个通道读取消息,然后将消息转储到Kafka队列中。为此,我使用了spring集成kafka。问题是我得到了一个无法解读的EvaluationContext错误。

以下是我的XML配置:

<int:channel id="myStreamChannel"/>
<int:gateway id="myGateway" service-interface="com.myApp.MyGateway" >
    <int:method name="process" request-channel="myStreamChannel"/>
</int:gateway>
<int:channel id="activityOutputChannel"/>
<int:transformer input-channel="myStreamChannel" output-channel="activityOutputChannel" ref="activityTransformer"/>    
<int-kafka:outbound-channel-adapter id="kafkaOutboundChannelAdapter"
                                    kafka-producer-context-ref="kafkaProducerContext"
                                    auto-startup="false"
                                    channel="activityOutputChannel"
                                    topic="my-test"
                                    message-key-expression="header.messageKey">
    <int:poller fixed-delay="1000" time-unit="MILLISECONDS" receive-timeout="0" task-executor="taskExecutor"/>
</int-kafka:outbound-channel-adapter>

<task:executor id="taskExecutor"
               pool-size="5-25"
               queue-capacity="20"
               keep-alive="120"/>

<int-kafka:producer-context id="kafkaProducerContext" producer-properties="producerProperties">
    <int-kafka:producer-configurations>
        <int-kafka:producer-configuration broker-list="kafkaserver.com:9092"
                                          key-class-type="java.lang.String"
                                          value-class-type="java.lang.String"
                                          topic="my-test"
                                          key-encoder="stringEncoder"
                                          value-encoder="stringEncoder"
                                          compression-codec="snappy"/>
    </int-kafka:producer-configurations>
</int-kafka:producer-context>

当我通过Spring启动运行我的应用程序时,我得到这个异常:

创建名称为org.springframework.integration.kafka.outbound.KafkaProducerMessageHandler#0的bean时出错:init方法调用失败;嵌套异常java.lang.IllegalArgumentException:[断言失败]-此参数是必需的;它不能为空

这是堆栈跟踪中的违规行:

位于org.springframework.integration.kafka.outbound.KafkaProducerMessageHandler.onInit(KafkaProducerMessageHandler.java:68)

这是第68行发生的事情:

< code > assert . not null(this . evaluation context);

因此EvaluationContext为空。我不知道为什么。

顺便说一句,当我将 Kafka endpoint替换为一个简单的 stdout endpoint来打印消息正文时,一切正常。

你能告诉我我的Kafkaendpoint配置没有可用的Evalue ationContext有什么问题吗?

共有1个答案

长孙智刚
2023-03-14

您的问题属于版本不匹配地狱。Spring Boot将不支持IntegrationEvaluationContextAware的Spring Integration Core版本拉入KafkaProducerMessageHandler中的 >。

因此,您应该将Spring集成Kafka升级到最新版本:https://github.com/spring-projects/spring-integration-kafka/releases

 类似资料:
  • 我尝试使用Spring集成HTTP开发SpringBoot Rest服务器- 我有一个控制器,用“@Controller”和“@RequestMapping”注释,并尝试创建以下流: 获取请求"/"- 但它不起作用。 我的集成Xml: 错误是: 但在我看来,控制器应该是通过Request Map注释的订阅者... 我上传了一个示例github项目:https://github.com/marcel

  • 我正在构建一个小微服务来访问来自SFTP文件服务器的文件。我决定使用Spring Integration SFTP完成这项工作。我对Spring Integration很陌生,对它的工作原理很困惑。 我的目标是在SFTP服务器上获得一个目录中的文件列表,并将它们呈现给用户界面。从那里,用户将选择一个文件进行下载,我将使用文件名将文件从SFTP服务器流式传输到用户界面。 其次,我是否需要两个接口才能

  • 在Spring MVC项目中,我试图通过Spring Websockets将使用过的Kafka数据发送到前端(JavaScript)。 为了建立服务器和客户端之间的通信,我有以下内容。 客户端(app.js) 服务器(KafkaController.java) 要使用来自特定Kafka主题的数据,我使用@KafkaListener注释如下: 我有一个适当的Kafkanconfig类,包含所有必要的

  • 问题内容: 我想使用Spring Batch和Spring Integration从数据库导入数据,并将它们写入文件,然后通过ftp将其传输到远程服务器。 但是我想我的问题是我不想为我的表创建域对象。我的查询是随机的,我想要一些可以读取数据并将其写入文件并进行传输的东西。 是否可以在不创建各自的域对象的情况下使用Spring Batch和Integration? 问题答案: 绝对。您可以将JDBC

  • 问题内容: 我已经下载并安装了Spring工具套件。现在,当我尝试在IntelliJ中创建新项目时,它在库中没有显示Spring。如何在其中获取Spring? 提前致谢! 问题答案: 在SpringSource工具套件具有无关的IntelliJ IDEA ,实际上它是一个不同的IDE(这是一个专门的Eclipse分布)。 因此,尽管下载Spring 框架 确实有意义(尽管最好通过Maven之类的构

  • 我有一个集成流程,其中我使用处理程序向我的消息添加一些标题: 它工作得很好,但因为它是关于丰富标题的,我想知道是否可以使用一个enrichHeaders方法来做同样的事情。我最接近的是: 它按预期工作,但显然效率低下,因为我为添加的每个标头复制了一个服务调用。有没有办法有效地重写它,或者我应该使用处理程序?