Azure EventHub - Как удалить событие?

1

Как всегда, я был бы признателен за вашу помощь, поскольку я в настоящее время застрял !!!

У нас есть новый проект, и мы будем использовать Azure EventHub. Я создал демонстрационное приложение, где мы можем добавлять события в Event Hub, а также где мы можем их использовать с помощью IEventProcessor (Project Receiver). Вопросы состоят в том, что каждый раз, когда я выполняю проект приемника, я вижу те же события. Разве мы не должны ожидать, что эти события будут удалены - удалены после их потребления?

Пример в проекте Receiver:

foreach (EventData eventData in messages)
{
        string data = Encoding.UTF8.GetString(eventData.GetBytes());

        Console.WriteLine(string.Format("Message received.  Partition: '{0}', Data: '{1}'",
                context.Lease.PartitionId, data));
}

Есть ли способ удалить/удалить событие после Console.WriteLine или сообщение будет сохранено в течение дня? С Очереди вы можете сигнализировать о завершении, но с EventHub не вижу никакой команды, я могу использовать ее для удаления/удаления.

Любой ответ был бы весьма признателен. Нам было дано указание использовать EventHub, но не причины, это не вопрос выбора.

  • 0
    Как вы регистрируете свой процессор? Не могли бы вы добавить немного больше кода? Вы используете прямой потребитель или EventProcessorHost?
Теги:
azure
asynchronous
azure-eventhub

5 ответов

5

Убедитесь, что вы вызываете context.CheckpointAsync перед выходом из ProcessEventsAsync. Это сохранит смещение клиента для раздела, а следующий экземпляр процессора, которому будет присвоен этот раздел, возобновится с последнего сохраненного смещения.

См. Http://msdn.microsoft.com/en-us/library/dn751578.aspx для документации (но не много информации).

1

События в Azure Event Hub будут удалены после их буферизации в течение определенного периода хранения. Вы можете установить дни удерживания от 1 до 7 дней. Нет необходимости их вручную удалять.

  • 0
    Я не думаю, что это отвечает на вопрос вообще. Хотя это правда, что события исчезнут, более важный вопрос заключается в том, как предотвратить их многократную обработку при последовательном выполнении демонстрационного приложения .
1

вы должны использовать контрольную точку и сохранить смещение для раздела. AFAIK нет способа удалить события из eventhub. Он будет автоматически удален из eventhub после дней сохранения событий. Но я также видел, что мы получим сообщения, которые завершили свои дни удержания.

https://social.msdn.microsoft.com/Forums/windows/en-US/93b1bf18-2229-4da8-994f-ddc7c675f62f/message-retention-day-not-working?forum=servbus

Поэтому я считаю, что они будут удалены автоматически, когда вы нажмете на квоту пространства, или это будет похоже на запланированное задание, но не уверен.

0

В дополнение ко всем другим ответам, есть еще одна непонятная точка: EventHub не может удалять сообщения старше периода хранения до 30 дней. Это зависит от нагрузки, наложенной на концентратор.

Например, период хранения - 1 день, но если есть несколько сообщений, они могут храниться в течение более длительного периода.

К счастью, они не выставлены.

-2

Наилучшим вариантом использования концентратора событий является инфраструктура EventProcessorHost. Это дает вам возможность проконтролировать любое сообщение, которое вы уже прочитали. Для этого он сохраняет (в хранилище blob) индекс последнего сообщенного контрольного сообщения, чтобы возобновить обработку в случае выключения.

https://blogs.msdn.microsoft.com/servicebus/2015/01/16/event-processor-host-best-practices-part-1/

Вероятно, вам также понадобится эмулятор хранилища для целей разработки, но если у вас есть учетная запись Azure, вы можете использовать удаленное хранилище blob.

https://docs.microsoft.com/en-us/azure/storage/common/storage-use-emulator

Ещё вопросы

Сообщество Overcoder
Наверх
Меню