Удалить прочитанные данные для аутентифицированного пользователя?
В DDS, что мое требование, у меня много подписчиков, но издатель холост. Мой подписчик читает данные из DDS и проверяет сообщение для этого конкретного подписчика. Если проверка прошла успешно, то только она берет данные и удаляет из DDS. Сообщение должно храниться в DDS до тех пор, пока аутентифицированный подписчик не получит свои данные. Как я могу добиться этого с помощью DDS (в среде Java)?
1 ответ
Прежде всего, вы должны знать, что с DDS
, Subscriber
никогда не сможет удалить данные из глобального пространства данных. каждый Subscriber
имеет собственную кэшированную копию распределенных данных и может действовать только на эту копию. Если один Subscriber
принимает данные, а затем другие Subscribers
для того же Topic
это никак не повлияет на это. Только Publishers
может удалить данные глобально для каждого Subscriber
, Из вашего вопроса не ясно, знаете ли вы это.
Независимо от этого, кажется, что использование ContentFilteredTopic
(CFT
) подходит здесь. Согласно описанию, Subscriber
знает имя файла, которое он ищет. С CFT
, Subscriber
может указывать, что его интересуют только образцы, которые имеют конкретное значение для file_name
приписывать. Инфраструктура позаботится о процессе фильтрации и обеспечит Subscriber
не получит никаких данных с другим значением для атрибута file_name
, Как следствие, любой take()
действие сделано на DataReader
будет содержать соответствующую информацию, и нет необходимости сначала проверять данные, а затем принимать их.
Документация API должна содержать более подробную информацию о том, как использовать ContentFilteredTopic
,