Java 在Kafka的BoundChannelAdapter中实现Spring集成

Java 在Kafka的BoundChannelAdapter中实现Spring集成,java,spring-integration,apache-kafka,Java,Spring Integration,Apache Kafka,我试图在spring集成中实现一个自定义入站通道适配器,以使用来自的消息。基于spring集成示例,我发现我需要创建一个实现MessageSource接口的类,并实现receive()方法,该方法将从kafka返回已使用的消息。但是基于,KafkaStream中的消息迭代器由BlockingQueue支持。因此,如果队列中没有消息,线程将被阻塞 那么,实现receive()方法的最佳方法是什么,因为该方法可能会一直阻塞,直到有东西需要使用 在更一般的意义上,我们如何为流式消息源实现一个自定义入站

我试图在spring集成中实现一个自定义入站通道适配器,以使用来自的消息。基于spring集成示例,我发现我需要创建一个实现MessageSource接口的类,并实现receive()方法,该方法将从kafka返回已使用的消息。但是基于,KafkaStream中的消息迭代器由BlockingQueue支持。因此,如果队列中没有消息,线程将被阻塞

那么,实现receive()方法的最佳方法是什么,因为该方法可能会一直阻塞,直到有东西需要使用

在更一般的意义上,我们如何为流式消息源实现一个自定义入站通道,该通道会一直阻塞,直到有东西可以使用。

receive()方法可以阻塞(只要底层操作正确响应中断的线程),并且从入站通道适配器的角度来看,根据底层源的期望,最好使用固定延迟触发器。例如,“长轮询”可以在提供非常小的延迟值时模拟事件驱动的行为

我们在JMS轮询MessageSource实现中也有类似的情况。在这里,底层行为由JmsTemplate的receive()方法之一处理。JmsTemplate本身允许配置超时值。这意味着,作为一个例子,您可以选择阻塞最多5秒,但在每个阻塞接收调用之间有一个非常短的延迟触发器。或者,您可以指定不确定的接收超时。决策最终取决于对底层资源、消息吞吐量等的期望

另外,我想让你们知道,我们自己也在探索卡夫卡适配器。也许您希望在spring集成扩展存储库中对此进行协作

问候,, 标记receive()方法可以阻塞(只要底层操作正确响应中断的线程),并且从入站通道适配器的角度来看,根据底层源的期望,最好使用固定延迟触发器。例如,“长轮询”可以在提供非常小的延迟值时模拟事件驱动的行为

我们在JMS轮询MessageSource实现中也有类似的情况。在这里,底层行为由JmsTemplate的receive()方法之一处理。JmsTemplate本身允许配置超时值。这意味着,作为一个例子,您可以选择阻塞最多5秒,但在每个阻塞接收调用之间有一个非常短的延迟触发器。或者,您可以指定不确定的接收超时。决策最终取决于对底层资源、消息吞吐量等的期望

另外,我想让你们知道,我们自己也在探索卡夫卡适配器。也许您希望在spring集成扩展存储库中对此进行协作

问候,,
Mark

谢谢@mfisher,我如何与您联系以讨论与spring集成扩展存储库协作的问题?谢谢@mfisher,我如何与您联系以讨论与spring集成扩展存储库协作的问题。。?