我正在尝试在分布式模式下配置spring XD,但遗憾的是我无法这样做。 我正在尝试使用redis支持模块间通道,并且我运行了3节点redis 3.0集群。
我对配置的更改如下所示,如果我遗漏了任何内容,请告诉我,或者我需要做任何其他事情才能使我的spring实例以分布式模式运行:
xd-container的servers.yml文件配置为
spring:
profiles: container
xd:
transport: redis
embeddedHsql: false
.
.
.
.
spring:
datasource:
url: jdbc:mysql://mysql-instance01:3306/springxd
username: springxd
password: springxd
driverClassName: com.mysql.jdbc.Driver
validationQuery: select 1
.
.
.
spring:
redis:
port: 6379
host: redis-instance01
pool:
maxIdle: 8
minIdle: 0
maxActive: -1
maxWait: 30000
sentinel:
master: mymaster
nodes: redis-instance02:6379,redis-instance03:6379
如果我使用此配置运行xd-container,我会得到错误堆栈跟踪,如图所示here
如果我删除了sentinel,sentinel:master,sentinel:nodes,容器启动正常,但在部署某个流时失败,错误日志如图所示here
但尝试使用JedisCluster从java连接时,我的redis群集完全没问题。
我在这个配置中遗漏了什么? 有什么想法或意见吗?
提前致谢。
答案 0 :(得分:0)
增加Redis maxclients
我的测试应用程序(具有3个容器的分布式模式)具有配置(一台机器):
spring:
profiles: container
xd:
transport: redis
---
# Redis properties
spring:
redis:
port: 6379
host: 127.0.0.1
pool:
maxIdle: 8
minIdle: 0
maxActive: -1
maxWait: 30000
Redis主要是单线程应用程序。
Redis将尝试将数据持久保存到磁盘。虽然redis为这个过程分叉,但它仍然会减慢一切。
对于分布式模式 - 例如,需要使用kafka。
希望这会对你有所帮助。