我们在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
答案 0 :(得分:0)
你的connectTimeout设置为什么?您可以尝试增加它以确定它是否有帮助吗?