我正在尝试实现一个解决方案来创建一个由kafka源,桥接模块和kafka接收器组成的SpringXD流。
所以我有类似的东西:
<channel id="pollable">
<queue />
</channel>
<bridge input-channel="pollable" output-channel="executorChannel">
<poller max-messages-per-poll="5" fixed-rate="5000" />
</bridge>
我的问题是我想以某种方式避开轮询者。基本上是因为当这些消息在队列中时我想避免将消息保留在内存中。我宁愿每隔X分钟从kafka读取一次,只需从队列中取出Y消息,然后将这些消息发送到下一个主题。
看起来我无法摆脱队列,但后来我的问题是:还有其他选择吗?我不喜欢把东西留在内存中,但我也不想使用这个选项:http://docs.spring.io/spring-integration/reference/html/system-management-chapter.html#message-store
答案 0 :(得分:1)
将数据保存在内存中并不是一个好主意。
您可以根据需要stop()
和start()
频道适配器(KafkaMessageDrivenChannelAdapter
);它将在重新启动时从中断处继续。
但是,kafka源代码使用的是spring-integration-kafka(1.3.x)的旧版本。
如果您创建自定义源以使用spring-integration-kafka 2.1.0(使用kafka 0.10.1.x客户端),则可以设置kafka属性max.poll.records
以限制提取的记录数