Иногда, когда я пытаюсь установить соединение с pubsub, я получаю сообщение об ошибке: «Подписка отменена и больше не может использоваться».
Чтобы решить эту проблему, мне нужно перезапуститьвеб-приложение.
public GideResponse getResponsePubSub(long petitionId, GidePetitionList<GideBackendPetition> petitionList) {
CountDownLatch latch = new CountDownLatch(1);
GideResponseReceiver receiver = new GideResponseReceiver(latch);
MessageListenerAdapter adapter = new MessageListenerAdapter(receiver);
this.container.addMessageListener(adapter, new PatternTopic(String.valueOf(petitionId)));
this.redisTemplateBackend.opsForList().rightPush(PETITIONS_QUEUE_NAME, petitionList);
latch = receiver.getLatch();
try {
latch.await(40000L, TimeUnit.MILLISECONDS);
} catch (InterruptedException var8) {
logger.error("The countdown latch for redis pub sub was interrupted", var8);
var8.printStackTrace();
throw new InternalCommunicationException();
}
if(latch.getCount() == 1L) {
logger.error("The pub sub request has not been processed, message was not received");
this.container.removeMessageListener(adapter);
throw new InternalCommunicationException();
} else {
this.container.removeMessageListener(adapter);
return receiver.getGideResponse();
}
}
Есть ли какой-либо метод в библиотеке spring-data-redis для решения такого рода проблем?
Я использую 'org.springframework.data:весна-данных Redis: 1.8.9.RELEASE '