2015-10-07 4 views
1

У меня вопрос о получении контроля над таймаутом запроса. То, что я хочу достичь, - это то, что я могу контролировать «тайм-аут запроса» - я хочу установить его, скажем, в течение 3 секунд, и если запрос займет больше времени, я получу исключение/что-то еще.Neo4j DB - клиентское соединение

До сих пор я пытался бесчисленными способами, даже с переопределением некоторых api, чтобы добраться до клиента в RestRequest, чтобы установить его там ... но у меня не было управления транзакциями.

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

Пожалуйста, разместите несколько советов/подходов, которые я мог бы использовать ... becouse im из идей.

Cheers!

ответ

4

Вы можете настроить тайм-аут транзакции в conf/neo4j-server.properties с этой установкой:

org.neo4j.server.transaction.timeout=NUMBER_OF_SECONDS_HERE 

Дополнительная информация доступна в документации here

Редактировать

Вы можете контролировать тайм-аут на каждый запрос основе путем включения защиты выполнения на сервере Neo4j и добавления заголовка max-execution-time к вашему запросу:

В conf/neo4j-server.properties комплекте:

org.neo4j.server.webserver.limit.executiontime=MAX_POSSIBLE_MS_HERE 

conf/neo4j.properties В набор:

execution_guard_enabled=true 

Затем добавить заголовок max-execution-time=100 и тайм-аут для этого запроса будет только 100ms.

Более подробная информация доступна here и here

Я просто проверил это как против legacy Cypher HTTP endpoint и transactional Cypher endpoint для Neo4j 2.2.5.

+0

Здравствуйте, да, я знаю это, но я также хочу добиться контролируемого тайм-аута от клиента.Чтобы поставить прямо 1 раз, я хочу иметь максимум 3 секунды, чтобы ждать ответа, в другой раз я могу подождать 5 секунд ... вот почему я хочу иметь полный контроль от клиента. – Fincio

+0

OK - Я понимаю ваш вопрос сейчас. Спасибо за разъяснения. Проверьте мои изменения. –

+0

Спасибо, Уильям! Меня здесь не было, и я принял ваш ответ прямо сейчас! Приветствия! – Fincio

1

Из того, что я испытал (Neo4j 2.2.2), кажется, что вам нужно будет установить оба следующих:

в ./conf/neo4j.properties:

execution_guard_enabled=true 

и ./conf/neo4j-server.properties:

org.neo4j.server.webserver.limit.executiontime={timeout_in_seconds} 

(примечание: это число находится в секундах, а не в миллисекундах)

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

`max-execution-time={timeout_in_milliseconds}` 

Neo4j будет использовать любой тайм-аут короче, поэтому указать большой тайм-аут в файле свойств.

+0

Да, спасибо, спасибо за помощь;) – Fincio

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