2013-02-13 1 views
0

Я использую Torquebox для создания приложения Rails со встроенным экземпляром Neo4j в качестве хранилища данных. Я прочитал несколько блогов, которые сказали, что Torquebox отлично подходит для этого, потому что вызовы метода Backgroundable запускаются в одном и том же процессе (заменяя delayed_job, который в любом случае не работает в jRuby).Torquebox Backgroundable Method calls

К сожалению, после игры с этим, это явно не так, поскольку новый поток продолжает пытаться запустить Neo4j, и он терпит неудачу.

После просмотра документации, я нашел это, которое подтверждает:

Сообщение процессоры работают в отдельном рубинового выполнения из приложения, которое может быть на другом компьютере, если у вас есть кластер.

Я новичок в Torquebox, так что я не уверен, что если люди просто неправильно на этом, или есть другой способ, с Torquebox сделать асинхронный вызов, который работает в том же процессе, поэтому он может взаимодействовать с встроенный хранилище данных Neo4j?

ответ

0

Я не знаком с Rails/Torquebox, но вы создаете новый график Neo4j в каждой теме? Если это так, в Neo4j, только одно соединение может быть сделано для базы данных графа во встроенной среде. Если вы размещаете Neo4j и используете клиент RESTful для вызова БД, у вас может быть несколько клиентов.

+0

Вы можете создать несколько потоков и по-прежнему поражать Neo4j, так как во встроенном режиме он работает в том же процессе. Поскольку Torquebox предлагает так много всего этого, я надеялся использовать его вместо того, чтобы кататься самостоятельно. Использование сервера просто невозможно для нас из-за большого количества записей, которые нам нужно выполнить, что вызывает проблемы с сервером RESTful. – Andrew

+0

Я имел в виду, что если вы создаете новый экземпляр класса базы данных встроенных графов в каждый поток, вы столкнетесь с проблемами, так как база данных Graph позволяет только одному объекту подключаться к этой базе данных во встроенной среде. Если вы создаете одноэлементный объект и передаете его в каждый поток, вы должны быть в безопасности. – Nicholas