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

如何配置Spring Integration以使用多线程从Redis读取?

东郭凯捷
2023-03-14

我正在创建一个int-redis:queue-inbound-channel-adapter,其中包含一个executor-task,pool-size=500和queue-capacity=0。

<redis:queue-inbound-channel-adapter
            id="fromRedis" channel="privateAggregationExecutorChannel" queue="${instance}_private"
            receive-timeout="1000" recovery-interval="3000" expect-message="false" error-channel="distributionErrors"
            auto-startup="false" task-executor="robotTaskExecutor"/>

<task:executor
            id="robotTaskExecutor"
            pool-size="500"
            queue-capacity="0"
            keep-alive="50"
            rejection-policy="CALLER_RUNS" />

<int:service-activator input-channel="privateAggregationExecutorChannel" ref="aggregationExecutor" method="run" />

我不知道我做错了什么,也不知道我是否遗漏了什么。我很感激你的帮助。

共有1个答案

韦宣
2023-03-14

没错。RedisQueueMessageDrivenEndpoint实际上是单线程组件:

@Override
protected void doStart() {
    if (!this.active) {
        this.active = true;
        this.restart();
    }
}

private void restart() {
    this.taskExecutor.execute(new ListenerTask());
}

正如您所看到的,只有一个ListenerTask从这个通道适配器被调度。

为了使它是多线程的,最好有一个executorchannel来从这个通道适配器发送消息。这样,即使RedisQueueMessageDrivenEndpoint是单线程处理,您仍然可以使用多线程处理。

 类似资料:
  • 我有spring批处理应用程序,配置步骤如下: 像这样的读者: 当我执行应用程序,得到这个错误: 组织。springframework。jdbc。UncategorizedSQLException:尝试处理下一行失败;SQL的未分类SQLException[select*from User];SQL状态[99999];错误代码[17289];最后一行之后的结果集;嵌套的例外是java。sql。SQ

  • 有一个问题,通过遵循回购 https://github.com/razorinc/redis-openshift-example 当我启动redis server时,它显示“[12010]25 Mar 20:14:53#打开端口6379:bind:权限被拒绝” 我试图将端口0更改为端口3128,但仍然得到相同的错误。。。。不知道为什么 --更新当我尝试升级到redis 2.6并使用--port参数

  • 问题内容: 我让Spring Redis使用所有默认配置(例如default 等)。 现在,我试图通过在文件中进行配置来进行相同的配置。但是我无法弄清楚应该如何准确地读取属性值来创建bean。 Redis配置文件 application.properties中的标准参数 spring.redis.sentinel.master = themaster spring.redis.sentinel.n

  • 我让Spring Redis使用和所有默认配置工作,比如default等等。 现在,我试图通过在文件中配置它来进行相同的配置。但是我不知道应该如何创建bean,准确地读取我的属性值。 spring.redis.sentinel.master=themaster spring.redis.sentinel.nodes=192.168.188.231:26379 spring.redis.passwo

  • 问题内容: 使用Lettuce,我们如何配置运行在主机x上的6379端口上的Spring Data Redis和运行在相同或不同主机上的6380端口上的slave? 问题答案: 该功能将包含在即将发布的Spring Data Redis 2.1版本中。您将配置类似于: Lettuce从静态(不由Redis Sentinel管理)设置中自动发现主服务器和从服务器。

  • 我正在编写一个简单的套接字编程应用程序,它使用一台服务器和一个客户端。我试图启动一个线程(从客户端文件中),从套接字输入流中读取输入,这样我就可以将消息写入服务器,同时读取并打印到屏幕上。然而,当我运行我的代码时,我的代码卡在 在< code>InputReader.java文件中,读取无输入? 我的代码如下,请帮忙。 简单服务器1.java SimpleClient1.java 输入读取器.ja