我有一个Java Spring应用程序,我想在将连接到Redis for Azure的Azure应用服务上进行部署。我已经在不同的订阅上使用相同的应用程序完成了此操作。我已经在Azure上创建了AppService和Redis连接。我从Redis获得了连接字符串,并将其添加到Java应用程序中,并且还创建了一个如下的bean:
@Bean
public JedisConnectionFactory connectionFactory() {
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();
jedisConnectionFactory.setHostName(this.jedisHost);
if (this.jedisPassword != null && !this.jedisPassword.isEmpty()) {
jedisConnectionFactory.setPassword(this.jedisPassword);
}
jedisConnectionFactory.setPort(jedisPort);
jedisConnectionFactory.getPoolConfig().setMaxIdle(30);
jedisConnectionFactory.getPoolConfig().setMinIdle(10);
// jedisConnectionFactory.setUsePool(true);
return jedisConnectionFactory;
}
当我在本地环境中运行应用程序时,一切正常。应用程序启动,并且也可以连接到Redis。 但是,当我将其部署到蔚蓝的云上时,我得到:
Caused by: java.net.SocketTimeoutException: connect timed out
JedisConnectionException: Failed connecting to host valuegoredis.redis.cache.windows.net:6380
JedisConnectionException: Could not get a resource from the pool
Error creating bean with name 'enableRedisKeyspaceNotificationsInitializer'
在运行区域设置时,我也遇到相同的问题,但是我添加了防火墙规则以包括我的IP。 我还添加了通过运行nslookup .azurewebsite.net找到的appService的IP,但是这里没有任何变化。
我迷失了方向,试图弄清楚如何使它起作用。
编辑:我已经尝试了jedis端口6379和6380 The the blue circled are the IP of my app service and the red are my local IP
我在6380和6379上同时允许SSL和SSL连接,但似乎没有任何作用