Потоки Кафки: распознавание, когда предмет покидает область и возвращается позже - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть приложение RFID, которое получает постоянные сообщения датчиков в пределах области.Область зонирована читателями (например, площадь 100 м х 100 м с 10 м ^ 2 зонами внутри), но также использует RSSI.Например, если элемент выбран считывателем 1 со значением RSSI, превышающим установленное пороговое значение для этого считывателя, этот элемент почти наверняка находится в этой зоне.

В сообщениях будут присутствовать: sensor_id, reader_id, rssi, времяи позже, после обогащения, customer_id (customer_id может иметь много reader_ids)

У меня будет поток поступающих сообщений о местоположении, которые сохраняются в Ktable с помощью составного ключа (sensor_id, customer_id), и значение будетвключают в себя visit_at, last_message_at, продолжительность.

  • KStream сообщений, обогащенных объединением с customer_id и порогом фильтра rssi
  • с rssi> threshold
  • map (илипреобразовать?), чтобы получить составной ключ и пользовательские значения
  • сохранить в KTable с помощью составного ключа

Мне нужно иметь возможность определить, когда элемент покидает область (что должно быть простокогда он перемещается в другой customer_id), но в этот момент мне нужно, чтобы эта запись была очищена и сохранена в нашей основной базе данныхt идентификатор датчика X находился у клиента Y в течение Z времени.Я не уверен, как этого добиться.

Проблема, с которой я столкнулся, заключается в том, что элементы будут перемещаться с одного идентификатора на другой, а затем потенциально возвращаться к предыдущему идентификатору.Если это происходит, они должны быть 2 отдельными событиями.У меня возникают проблемы с обдумыванием этого аспекта, потому что он включает в себя интервалы коммитов для kstream (я думаю?).

Глупо ли я думать, что интервалы коммитов не настроены правильно, что естьвозможность посещения зоны обрезания?Например, я - датчик X на клиенте Y, и я буду здесь десять минут, но ktable сбрасывается на 5 минут.

...