连接到Azure上托管的.net Core应用程序上的Redis时出错

时间:2017-05-29 21:43:59

标签: azure caching redis asp.net-core stackexchange.redis

我们在Azure上托管了一个redis缓存,我们在.net核心应用程序中使用以下服务:

@Test
public void testEvent() {
    String expectedEMResponse = "{\n" +
            "  \"data\": {\n" +
            "    \"id\": 19,\n" +
            "    \"type\": \"alarms\",\n" +
            "    \"attributes\": {}\n" +
            "  }\n" +
            "}";
    MessageHandler mockMessageHandler = mock(MessageHandler.class);
    this.acknowledgeAlarmInputChannel.subscribe(mockMessageHandler);

    MockRestServiceServer server = MockRestServiceServer.bindTo(restTemplate).build();
    server.expect(requestTo(emAcknowledgeEventUrl.replace("{hostID}", "12")))
            .andRespond(withSuccess(expectedEMResponse, MediaType.APPLICATION_JSON));

    AlarmInstance alarmInstance = new AlarmInstance();
    alarmInstance.setAlarmName("a1");
    alarmInstance.setInstanceId("1");
    alarmInstance.setAcknowledgedAt(new Date());
    alarmInstance.setAcknowledgedBy("u1");
    alarmInstance.setComponentName("x1");
    GenericMessage<AlarmInstance> message = new GenericMessage<AlarmInstance>(alarmInstance);

    Object o = this.acknowledgeAlarmInputChannel.send(message);
    System.out.println("output: " + o);
}

我们的连接字符串类似于以下内容:

services.AddSingleton<IConnectionMultiplexer>(provider => 
    ConnectionMultiplexer.Connect(Configuration.GetConnectionString("RedisConnection"))
);

从缓存中获取我们不会遇到问题,但如果我们添加到缓存中,我们有时会收到以下错误:

  

“StackExchange.Redis.RedisConnectionException:不可能   连接到redis服务器;创建一个断开的多路复用器,   禁用AbortOnConnectFail。 ConnectTimeout“

我已经阅读了将ourserver.redis.cache.windows.net:6380,password=******=,ssl=True,abortConnect=False,syncTimeout=4000 设置为abortconnect并增加超时的解决方案,但我已将其实现为上面的连接字符串。

如果您有任何建议,或者您认为我们对连接字符串有问题,请提出建议。

更新:我们已经实施了解决连接问题的解决方案,但现在我们得到了这个:

false

1 个答案:

答案 0 :(得分:0)

你的connectTimeout设置为什么?您可以尝试增加它以确定它是否有帮助吗?