缓冲 Spring 集成发布订阅通道

特里吉

我有一个 spring 集成应用程序,它有一个带有两个订阅者的 pub-sub 通道 - 一个将消息发布到 Kafka,另一个将消息写入文件。问题是将消息写入文件的服务激活器无法跟上向 Kafka 生成的其他服务激活器的速度。这会导致整体消息处理速度变慢。为了克服这个问题,我在 pub-sub 通道和写入文件的服务激活器之间添加了一个额外的层。转换器,除了消费消息并将消息放入文件编写器消费的直接通道之外什么都不做。这在我的情况下提高了性能,但我想知道这是否是正确的方法?示例配置如下:

<int:publish-subscribe-channel id="pschannel"/>
<int:service-activator id="kafkaSA" ref="producer" input-  channel="pschannel" method="publish"/>
<int:transformer input-channel="pschannel" ref="dummytransformer" method="doNothing" output-channel="directChannel"/>
<bean id="dummytransformer" class="org.test.DummyTransformer"/>
<int:channel id="directChannel">
    <int:queue capacity="200000" />
<int:channel>
<int:service-activator id="fileSA" ref="filewriter" input-channel="directChannel" method="publish" >
    <int:poller max-messages-per-poll="10000" fixed-delay="100" />
</int:service-activator>
阿尔乔姆·比兰

首先,它不是直接的,因为它实际上是<queue>由您的配置决定的。

嗯,这确实是一种方法,您绝对不会阻止您的 Kafka 生产者(第一个订阅者)。

您应该考虑队列和轮询器的无限配置:

<int:channel id="directChannel">
    <int:queue/>
<int:channel>
...
<int:poller fixed-delay="100" />

这样,消费者directChannel将以最佳速度处理消息,而不会在其他地方造成延迟。

另一种分配方式是task-executorfor publish-subscribe-channel- 所有订阅者都将在他们的一个线程中执行。

但是,是的,无论如何您都应该记住,Kafka 和那个文件制作者之间总是会有延迟。

你不需要任何DummyTransformer,顺便说一句。<bridge>关于此事有一个特殊的组成部分:http : //docs.spring.io/spring-integration/reference/html/messaging-channels-section.html#bridge

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Spring集成MQTT发布并订阅多个主题

来自分类Dev

Spring集成MQTT发布并订阅多个主题

来自分类Dev

无缓冲通道

来自分类Dev

Spring集成-通道和线程

来自分类Dev

当关闭缓冲通道时,是否应该排空缓冲通道

来自分类Dev

缓冲的golang通道丢失数据

来自分类Dev

Kinesis Streams 和 Spring 集成通道

来自分类Dev

内存分配如何为缓冲通道工作

来自分类Dev

Go中缓冲通道的用途是什么?

来自分类Dev

列出缓冲通道中的所有元素

来自分类Dev

是gorouines忽略通道的缓冲区大小

来自分类Dev

缓冲通道是否维持秩序?

来自分类Dev

Spring Integration的异步发布-订阅如何工作?

来自分类Dev

Spring 集成 - 循环发布消息(批量)

来自分类Dev

显示缓冲异步通道和通道之间的区别的示例?

来自分类Dev

Spring集成-入站与出站通道适配器

来自分类Dev

Spring集成错误通道在JUnit中没有消息

来自分类Dev

如何在Spring集成的同步通道中处理异常

来自分类Dev

Spring Batch /集成入站通道适配器

来自分类Dev

Spring集成将适配器设置为错误通道

来自分类Dev

Spring集成动态收件人输出通道

来自分类Dev

Spring集成-@Filter抛弃通道和/或throwExceptionOnRejection被忽略了吗?

来自分类Dev

Spring 集成:错误通道在 XML 中不可用

来自分类Dev

如何使用PortAudio将交错的缓冲区解析为不同的多通道缓冲区

来自分类Dev

Spring集成网关“调度程序没有订阅者”

来自分类Dev

Spring集成/ ActiveMQ在单个线程中订阅多个目标

来自分类Dev

Spring集成网关“调度程序没有订阅者”

来自分类Dev

Spring集成:没有可用的输出通道或回复通道标头

来自分类Dev

在golang中创建一块缓冲通道

Related 相关文章

热门标签

归档