Удалить прочитанные данные для аутентифицированного пользователя?

В 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,

Другие вопросы по тегам