redissonClient.poll () возвращает только первые 8 символов значения типа String - PullRequest
0 голосов
/ 04 апреля 2019

В настоящее время используется Reddison, создается RedissonClient и пытается опросить данные с сервера Redis. Я могу видеть данные в базе данных redis, если я проверяю через redis-cli, но когда я смотрю на строковое значение в моем java-приложении, это всегда первые 8 символов строки и не более. Не уверен, почему это не даст мне всю ценность.

Я также пытался использовать метод .peek (), и я вижу тот же симптом, что я получаю только 8 символов возвращаемой строки.

Вот основная часть кода, которую я могу предоставить по мере необходимости:

@Service
@Slf4j
public class RedisConsumer {

RedisConfig redisConfig;
//RQueue<String> redisQueue;
RBlockingQueue<String> redisQueue;

@Autowired
RedisConsumer(RedisConfig redisConfig) {
    this.redisConfig = redisConfig;
}

public void pollAuditQueue() {

    //Redisson
    redisQueue.add("{JSON string here snipped out for brevity}");
    String item = redisQueue.poll();

    if (!Objects.isNull(item)) {
        log.info("I found this item: " + item);

    } else {
       log.info("Nothing in queue...");
   }
}

@PostConstruct
private void init() throws Exception {
    RedissonClient redissonClient = redisConfig.redisson();
    redisQueue = redissonClient.getBlockingQueue("test");

    while(true) {
        pollAuditQueue();
        Thread.sleep(5000);
    }
}

Когда я смотрю на оператор print в консоли, я вижу:

I found this item: {"AuditEv

Когда я проверяю redis-cli, я вижу все значение:

1) "\xfc\t{\"AuditEvent\":{\"timestamp\":\"2018-11-27 04:31:47.818000+0000\" snipped the rest out for brevity}"

Наконец, если я проверю, что элемент был удален из Redis после опроса в приложении Java, я могу подтвердить, что это так.

Любая помощь была бы полезна, поскольку она не вызывает какой-либо конкретной ошибки. Я не нахожу в Интернете никаких ресурсов, чтобы помочь с ней справиться.

1 Ответ

1 голос
/ 04 апреля 2019

Я обнаружил одну вещь, которую не заметил в своих предыдущих тестах.Когда я вручную вставлял, используя redis cli, я копировал то, что делали мои первые тесты через Java, которые ставили \ xfc \ t впереди, что видно из моего примера выше.

Только сейчас, когда я использовал redisQueue.add из своего приложения, я заметил, что в redis вместо него есть \ xfc \ x80 \ x90 \ x01, и они возвращают мне всю строку в моем приложении.Я предполагаю, что это как-то связано с распределением памяти?Я отмечаю вопрос как решенный, поскольку я больше не испытываю проблему.Если кто-то может оставить комментарий о том, что означают эти буквы / цифры, это может быть важно для тех, кто читает этот пост позже.После того, как я его исследую, я добавлю этот комментарий сам, если никто не побил меня этим!

...