Вот актуальная проблема:
Это https://issues.apache.org/jira/browse/STORM-3501. Эта проблема касается только запуска в LocalClusters, и только в том случае, если у вас нет каталога ресурсов в сгенерированном вами банке.
Вы можете обойти это, добавив каталог ресурсов в ваш jar. С вашим pom вы хотите добавить каталог src / main / resources / resources.
Что касается вещей, которые следует учитывать при запуске одноузлового Storm, я думаю, вам следует задуматься о том, является ли Storm правильным выбором для вашеговариант использования. Storm достаточно сложен, и большая часть сложности заключается в том, что мы хотим, чтобы он мог распределять вычисления по многим физическим машинам. Если вы собираетесь запускать все свои вычисления на одной машине, вы, возможно, не сильно выиграете, если будете использовать Storm, например, просто напишите обычное Java-приложение или что-то наподобие Apache Camel.
Другие вопросы, которые следует учитыватьпри работе с одним узлом:
Шторм не подвержен сбоям, поэтому, если вы получите какие-либо ошибки, произойдет сбой всего рабочего. Поскольку вы работаете на одной машине, вы можете отключить значительную часть вашего кластера (по умолчанию 4 рабочих на машину, поэтому вы потеряете четверть своего состояния в случае возникновения ошибки).
Не используйте LocalCluster для рабочих нагрузок, он не предназначен для этого. Настройте настоящую установку Storm, а затем просто запустите ее на одной машине.
Вот некоторые вещи, которые бросаются в глаза, может быть, некоторые из них помогут:
Вам нужно добавить спящий режим после cluster.submitTopology, или ваша программа должна просто выйти немедленно. Этот вызов не блокируется, он просто передает топологию в LocalCluster, а затем возвращает. Когда ваш основной метод завершает работу, LocalCluster, вероятно, также отключится. В «реальной» настройке вы будете отправлять в кластер, который выполняется как отдельный процесс, так что это не будет проблемой, но при использовании LocalCluster вам нужно заставить основной поток ждать, пока вы не захотите закрыть программу.
На случай, если вы в конечном итоге будете использовать подобный код в тесте, вы должны не забывать закрывать LocalCluster, когда закончите. Он может быть автозамечен, поэтому вы можете просто попробовать его.
Хорошей практикой является закрепление кортежей в болтах. Подумайте о расширении BaseBasicBolt, если вы просто хотите подтвердить, когда ваш болт сделан с кортежем.