2012-05-29 3 views
2

Как обрабатывать управление транзакциями в Solr с помощью Solrj? В сети нет документации, связанной с этим. Но я был бы признателен, если кто-то сможет предоставить любые ссылки или информацию, связанную с управлением транзакциями, используя SolrJ.Управление транзакциями solr с использованием solrj

+2

Вы говорили о транзакционном управлении в стиле DB? В SolrJ нет никакого смысла. Откат отката и фиксации отправляются через вызов веб-службы SOLR, поэтому они помещаются в очередь там, и нет риска одновременных проблем доступа (из памяти). Используете ли вы встроенный SOLR? – nickdos

+0

Да, мне интересно, как я мог добиться управления транзакциями стиля DB, используя solrj, когда есть многократные чтения и записи в Solr и в базу данных. Мы используем Hibernate для управления транзакциями DB. Если есть исключение из Solr или из базы данных, то и транзакция базы данных, и комманды solr необходимо отменить. Из всего, что я понимаю, похоже, что для управления транзакциями все написано в коде, используя SolrJ api для коммитов и откатов. Пожалуйста, дайте мне знать, если есть какие-либо другие способы сделать это. Благодарю. – Ravi

+0

Вернитесь к вопросу, который вы задали на SO, и посмотрите, есть ли у кого-нибудь из них ответы, которые вы считаете «правильными», если они отмечают их как правильные с зеленым значком галочки. Ваша ставка сейчас говорит о 75%, что не так уж плохо, так что, возможно, вы уже это сделали ... – nickdos

ответ

2

Вам придется программировать сделки с SolrJ. При работе с несколькими записями.

  1. Используйте метод добавления apr SolrServer для добавления SolrInputDoucments к серверу.
  2. Когда все документы SolrInputDocuments добавлены, вызовите метод фиксации из apr SolrServer, чтобы зафиксировать все изменения.
  3. В случае исключения из Solr, если вы хотите отменить запись в Solr, вызовите метод отката api SolServer.
  4. Если вы хотите отменить запись в базу данных, просто отбросьте исключение во время выполнения из блока catch.

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

+0

Как вы справляетесь с ситуацией, когда commit выдает исключение? Для тех, кто использует аннотации @Transaction, этот сбой происходит за пределами тела метода, использующего SolrJ. –

+0

Какое исключение вы видите? Если коммит не выполняется с помощью исключения, мы можем поймать Исключение и вызвать откат Solr. Но обратите внимание, что Rollback откатит каждый вызов до последнего фиксации. – Ravi

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