Установка Rabbitmq в Граале

Я столкнулся с проблемой конфигурации с Rabbitmq и Grails. Мне было интересно, сталкивался ли кто-нибудь еще с этой конкретной ситуацией.

Моя конфигурация rabbitmq в config.groovy выглядит так:

environments {
    production {
        rabbitmq {
            connectionfactory {
                username = '******'
                password = '******'
                hostname = 'ip-******.ec2.internal'

                channelCacheSize = 25
                prefetchCount = 10
                concurrentConsumers = 3
            }
            retryPolicy {
                maxAttempts = 10
            }
            queues = {
                exchange name: 'plover', type: topic, durable: true, {
                    error durable: true, binding: 'error.#'
                    user durable: true, binding: 'user.#'
                    track durable: true, binding: 'track.#'
                    klout durable: true, binding: 'klout.#'
                    showuser durable: false, binding: 'showuser.#'
                    network durable: true, binding: 'network.#'
                    customer durable: true, binding: 'cusotmer.#'
                    recommend durable: true, binding: 'recommend.#'
                    pusher durable: true, binding:'pusher.#'
                    backfill durable: true, binding: 'backfill.#'
                    mail durable: true, binding: 'mail.#'
                    checkaction durable: true, binding: 'checkaction.#'
                    timertasks durable: true, binding: 'timertasks.#'
                    mission durable: true, binding: 'mission.#'
                    sentiment durable: true, binding: 'sentiment.#'
                    updateuser durable: false, binding: 'updateuser.#'
                    googlereader durable: true, binding: 'googlereader.#'
                    flickr durable: true, binding: 'flickr.#'
                }

                exchange name:'pubsub', type: fanout, durable: true
            }
        }
    }

    development {
        rabbitmq {
            connectionfactory {
                username = 'guest'
                password = 'guest'
                hostname = 'localhost'
                channelCacheSize = 25
                prefetchCount = 10
                concurrentConsumers = 3
            }

            retryPolicy {
                maxAttempts = 10
            }

            queues = {
                exchange name: 'plover', type: topic, durable: true, {
                    error durable: true, binding: 'error.#'
                    user durable: true, binding: 'user.#'
                    track durable: true, binding: 'track.#'
                    klout durable: true, binding: 'klout.#'
                    showuser durable: false, binding: 'showuser.#'
                    network durable: true, binding: 'network.#'
                    customer durable: true, binding: 'cusotmer.#'
                    recommend durable: true, binding: 'recommend.#'
                    pusher durable: true, binding:'pusher.#'
                    backfill durable: true, binding: 'backfill.#'
                    mail durable: true, binding: 'mail.#'
                    checkaction durable: true, binding: 'checkaction.#'
                    timertasks durable: true, binding: 'timertasks.#'
                    mission durable: true, binding: 'mission.#'
                    sentiment durable: true, binding: 'sentiment.#'
                    updateuser durable: false, binding: 'updateuser.#'
                    googlereader durable: true, binding: 'googlereader.#'
                    flickr durable: true, binding: 'flickr.#'
                }

                exchange name:'pubsub', type: fanout, durable: true
            }
        }

    }
}

Таким образом, все параметры конфигурации Rabbitmq выполняются в среде производства / разработки, как и предполагалось.

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

2013-04-18 13: 23: 10,583 [pool-7-thread-1] ОШИБКА RabbitmqGrailsPlugin - Параметры фабрики соединений RabbitMQ (rabbitmq.connectionfactory.username, rabbitmq.connectionfactory.password и rabbitmq.connectionfactory.hostname) должны быть определены в Config.groovy

И я не вижу, как мои настройки конфигурации нарушены. Конфигурация среды Grails не работает так, как задокументировано?

Майк

1 ответ

Решение

Оказывается, что версия Groovy, которую мы используем, содержит ошибку в ConfigSlurper, которая предотвращает несколько блоков Environments. Так что, если вы считаете, что в вашем config.groovy может быть несколько выражений Environments { Production {} Development {} Test {} }, то вы увидите довольно странное поведение.

На этой ошибке есть Jira. Я полагаю, что это будет исправлено в Groovy 2.1 или если вы хотите применить патч, представленный здесь. Я не очень доверяю патчам, поэтому я свел все различные среды в одно большое выражение (выглядит довольно некрасиво), и это решило проблему.

https://jira.codehaus.org/browse/GROOVY-5370

Другие вопросы по тегам