2016-03-17 2 views
0

Я тестирую и отлаживаю приложение для обработки событий (или обработки потока с использованием состояния), которое работает в верхней части kafka и использует samza. Я хочу удалить очереди и темы в kafka, чтобы задания samza получили пустую установку kafka при запуске.Как сбросить kafka, чтобы интегрировать его в процесс тестирования JUnit?

Как это сделать?


Edit:

Вопрос весьма более сложен и специфичен, что я писал в первом.

Как Дэвид утверждает, есть решение, чтобы очистить эту тему, начиная от Кафки 0.8.2: Purge Kafka Queue

То, что я заинтересован в в создании среды тестирования, которая автоматически загружает и Кафка зоопарка (которые связанный в моем репозитории git как двоичные пакеты).

Я использую среду градации + затмение и JUnit. Я запускаю интеграционные тесты из eclipse (как тесты JUnit).

Как можно автоматизировать загрузку? Должен ли я создать конкретный класс Test для настройки среды и запускать kafka и zookeeper? Есть ли ссылочный пример/код? Идея заключалась бы в загрузке среды, проведении нескольких тестов и остановке. Если этот процесс можно сделать за несколько секунд, лучше.

+0

Это дублированный вопрос, который задавали и отвечали раньше. См. Здесь: http://stackoverflow.com/questions/16284399/purge-kafka-queue –

+0

Как я думаю об этом, это может быть немного больший вопрос. Я собираюсь ответить на более широкий вопрос и вернуться к конкретным подходам. –

ответ

1

Есть different approaches для очистки отдельных тем. Все они могут быть расширены, чтобы очистить все ваши темы. Тем не менее, я думаю, вы задаете более широкий вопрос, связанный с созданием базовой среды для Kafka - что-то, что вам нужно для тестирования, возможно. Или, может быть, у вас есть производственный процесс, который начинается с нуля каждый раз. На самом деле это разные сценарии.

Для тестирования

Если вы говорите тестирование, то я хотел бы сделать что-то перебор, по назначению. Во-первых, я бы сконфигурировал Kafka так, как хотелось бы, чтобы он смотрел при запуске. Тогда я бы закрыл его и вернул его - либо используя tar, либо даже создав образ диска, если я использую виртуальную машину.

Я бы использовал его и злоупотреблял им во время тестирования, а затем выбросил все, когда закончите. «Сброс kafka» означал бы восстановление только с помощью untar или с образа диска или любого другого (rsync, или просто cp из другого каталога).

Для тестирования я действительно хочу чистое начало, поэтому предпочитаю грубую силу.

Во время производства

Если это часть ваших производственных процессов - и я подвергаю сомнению мудрость, что на его лице, - то я хотел бы попробовать и не потерять данные первого. Либо включайте резервную копию в свой процесс, либо не перезагружайте темы.

Topic rename еще не существует - но вы можете использовать тот же подход, который будет использоваться. Не обращайтесь непосредственно к именам тем - иметь словарь для сопоставления имен виртуальных тем с именами фактических тем.

Затем, вместо того, чтобы «перезагружать» Kafka каждый раз, создавать новые версии всех тем и обновлять словарь для сопоставления имени виртуальной темы во вновь созданных версиях тем.

+0

Это для тестирования. В этом связанном вопросе уже было: http://stackoverflow.com/a/30833940/2108278 – user2108278

+0

Да, я ссылался на это в своем ответе - но это немного более высокий уровень. Эта статья обрабатывала отдельные темы очистки, я принимал этот вопрос на более высоком уровне - как сбросить все Кафки для тестирования, а не только по отдельной теме. –

Смежные вопросы