Плагин Riak для Grails — не работает

Я пытаюсь настроить и протестировать плагин Riak для Grails. Я удалил плагин гибернации, удалив его зависимость в BuildConfig. Примечание. Я не пытаюсь использовать это против GORM, а просто запрашиваю поддержку данных Spring.

Мне пришлось добавить следующие две строки, чтобы избежать ошибок во время выполнения после удаления спящего режима;

springConfig.addAlias "persistenceInterceptor", "riakPersistenceInterceptor"
springConfig.addAlias('transactionManager', 'riakTransactionManager')

Проект компилируется нормально и запускается. Однако, как только я пытаюсь использовать какой-либо из методов Riak, я обычно получаю ошибку 404 — Object not found или что-то более неуловимое.

Документация предполагает, что я могу использовать услугу автоподключения;

import org.springframework.data.keyvalue.riak.core.RiakTemplate

class myClass {

    // Service injection
    def riakTemplate

    def myMethod() {
        riakTemplate.set("myBucket", "myKey", "A String")
    }

}

Но это не работает. Я пробовал;

RiakTemplate riakTemplate = new riakTemplate("serviceurl", "mapredurl")
riakTemplate.set("myBucket", "myKey", "A String")

У меня заканчиваются идеи. Есть ли руководство или что-то полезное, чтобы заставить это работать?

Стоит отметить, что у меня на локальном хосте работает Riak, и я могу достаточно легко управлять ключами с помощью Curl. Так что я не думаю, что это проблема Riak.

Возможно, я упускаю что-то очевидное. :)

Я использую Grails 2.1.0.

Благодарю вас!


person Cadriel    schedule 07.08.2012    source источник
comment
Похоже, что если я вручную создаю ключ (используя curl) под именем ведра, к которому я пытаюсь получить доступ через код, все начинает работать. Таким образом, получается, что если вы используете riakTemplate для создания ключа в НОВОЙ корзине, ничего не получится. Если он использует существующее ведро - все работает нормально.   -  person Cadriel    schedule 07.08.2012
comment
Отметить это. Ни один из установленных методов не работает, все они выдают ошибку 404. Однако, если вы используете метод put (т. е. они генерируют для вас ключ), они работают. Кроме того, если вы запускаете, например, метод 'containsKey', это всегда приводит к ошибкам 404 для ключей, которые не существуют, но работает, как предполагалось, для ключей, которые ДЕЙСТВИТЕЛЬНО существуют.   -  person Cadriel    schedule 07.08.2012


Ответы (2)


Я знаю, что это не «ответ на вопрос», но для текущего проекта мы решили отказаться от плагина из-за аналогичных проблем в пользу использования Spring Rest непосредственно в классах обслуживания. Я думаю, что этот подход хорошо сработает и для вас, поскольку вы упомянули в начале, что не пытаетесь использовать поддержку GORM плагина.

Вы должны найти прямой подход Spring Rest довольно простым в реализации с большим контролем над уменьшением карты и использованием 2i. Я бы также рекомендовал начать с интерфейса Riak, который пытается следовать собственному Java-клиенту Basho, чтобы вам было проще заменить вашу реализацию Rest реализацией Basho PBC когда-нибудь в будущем, если вы почувствуете, что вам нужны преимущества производительности.

Особое примечание о плагине Riak: кажется, что некоторое время назад он был приостановлен на неопределенный срок, и ведущий, Джонатан Брисбин, похоже, в последнее время особенно сосредоточен на новом проекте Spring Data - REST - возможно, новая работа над плагином Riak будет "родиться" из этого?

-Тодд

person Todd    schedule 17.08.2012

Я также столкнулся с этой проблемой и обнаружил, что это связано с тем, что конфигурация по умолчанию заключается в использовании DefaultErrorHandler в базовом RestTemplate.

Чтобы RiakTemplate не выходил из строя на 404-х, вы можете установить для свойства «ignoreNotFound» значение true, и он снова будет работать.

person T J Zeeman    schedule 09.04.2013