Подпишитесь на Орион без получения старых сущностей

Есть ли способ подписаться на Orion (например, объект Car) без получения старых объектов?

Пример: Орион имеет -> Автомобиль A, Автомобиль B.

Я делаю подписку onchange, и Orion отправляет мне одновременно: уведомление об автомобиле A и уведомление об автомобиле B.

Нам понадобится следующее:

У Ориона -> Автомобиль A, Автомобиль B.

Я делаю обменивающуюся подписку, но в данный момент ничего не получаю. Если в будущем Orion получит Car B или изменит какой-либо атрибут Car A или Car B, отправьте уведомление.

Это возможно?


person antonio    schedule 03.09.2015    source источник


Ответы (1)


Поведение объясняется в руководстве пользователя:

Вы можете задаться вопросом, почему Accumulator-server.py получает это сообщение, если вы на самом деле не выполняете никаких обновлений. Это потому, что Orion Context Broker рассматривает переход от «несуществующей подписки» к «подписанной» как изменение.

Мы понимаем, что для некоторых случаев использования это неудобно. Однако подобное поведение разрушает другие варианты использования, которым необходимо знать «начальное состояние» до начала получения уведомлений, соответствующих фактическим изменениям. Лучшее решение, чтобы сделать всех счастливыми, - сделать это настраиваемым, чтобы каждый клиент мог выбирать, что он предпочитает. Эта функция в настоящее время входит в нашу дорожную карту (см. эту проблему на github.com) .

Хотя это реализуется в Orion, в вашем случае, возможно, возможный обходной путь - просто игнорировать первую полученную уведомление, принадлежащую подписке (вы можете определить подписку, которой принадлежит одно уведомление, по полю subscriptionId в полезной нагрузке уведомления). Все последующие уведомления, относящиеся к этой подписке, будут соответствовать фактическим изменениям.

РЕДАКТИРОВАТЬ: возможность избежать первоначального уведомления наконец-то реализована в Orion. Подробности см. В этом разделе документации.. Теперь он находится в основной ветке (поэтому, если вы используете fiware/orion:latest docker, вы его получите) и будет включен в следующую версию Orion (2.2.0).

person fgalan    schedule 09.09.2015
comment
Ответ был отредактирован, чтобы включить соответствующую информацию, связанную с пропуском начального уведомления. - person fgalan; 17.01.2019