2013-08-23 1 views
0

배포 된 grails 응용 프로그램에서 CloudAMQP에 대한 연결을 구성하는 데 문제가 있습니다. 로컬에 설치된 RabbitMQ 인스턴스에 대해 응용 프로그램을 로컬로 실행할 수 있지만 CloudAMQP 서비스를 사용하여 CloudBees에서 실행되도록 내 응용 프로그램을 올바르게 정의하는 방법을 알 수 없습니다. 내 Config.groovy 파일에서 CloudAMQP 연결 구성

, 내 연결 정보와 큐를 정의하고 있습니다 :

응용 프로그램을 시작하고 연결을 시도 할 때
rabbitmq { 
    connectionfactory { 
     username = 'USERNAME' 
     password = 'PASSWORD' 
     hostname = 'lemur.cloudamqp.com' 
    } 

    queues = { 
     testQueue autoDelete: false, durable: false, exclusive: false 
    } 
} 

, 나는 다음과 같은 로그 메시지 참조 :

2013-08-23 21:29:59,195 [main] DEBUG listener.SimpleMessageListenerContainer - Starting Rabbit listener container. 
2013-08-23 21:29:59,205 [SimpleAsyncTaskExecutor-1] DEBUG listener.BlockingQueueConsumer - Starting consumer Consumer: tag=[null], channel=null, acknowledgeMode=AUTO local queue size=0 
2013-08-23 21:30:08,405 [SimpleAsyncTaskExecutor-1] WARN listener.SimpleMessageListenerContainer - Consumer raised exception, processing can restart if the connection factory supports it 
org.springframework.amqp.AmqpIOException: java.io.IOException 
    at org.springframework.amqp.rabbit.connection.RabbitUtils.convertRabbitAccessException(RabbitUtils.java:112) 
    at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:163) 
    at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:228) 
    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils$1.createConnection(ConnectionFactoryUtils.java:119) 
    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.doGetTransactionalResourceHolder(ConnectionFactoryUtils.java:163) 
    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.getTransactionalResourceHolder(ConnectionFactoryUtils.java:109) 
    at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:199) 
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:524) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.io.IOException 
    at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106) 
    at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102) 
    at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:124) 
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:381) 
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:516) 
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:545) 
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; reason: java.net.SocketException: Connection reset 
    at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67) 
    at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33) 
    at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:343) 
    at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:216) 
    at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:118) 
    ... 3 more 
Caused by: java.net.SocketException: Connection reset 
    at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:95) 
    at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:131) 
    at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:508) 
2013-08-23 21:30:08,406 [SimpleAsyncTaskExecutor-1] INFO listener.SimpleMessageListenerContainer - Restarting Consumer: tag=[null], channel=null, acknowledgeMode=AUTO local queue size=0 
2013-08-23 21:30:08,406 [SimpleAsyncTaskExecutor-1] DEBUG listener.BlockingQueueConsumer - Closing Rabbit Channel: null 
2013-08-23 21:30:08,407 [SimpleAsyncTaskExecutor-2] DEBUG listener.BlockingQueueConsumer - Starting consumer Consumer: tag=[null], channel=null, acknowledgeMode=AUTO local queue size=0 
Aug 23, 2013 9:30:11 PM org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring FrameworkServlet 'grails' 
Aug 23, 2013 9:30:11 PM org.apache.coyote.http11.Http11Protocol init 
INFO: Initializing Coyote HTTP/1.1 on http-8634 
Aug 23, 2013 9:30:11 PM org.apache.coyote.http11.Http11Protocol start 
INFO: Starting Coyote HTTP/1.1 on http-8634 
+0

RabbitMQ api를 CLOUDAMQP_URL_ 패턴과 직접 연결하여 연결을 시도했지만 예외가 발생했습니다. –

답변

0

귀하의 응용 프로그램에 CloudAMQP 서비스를 바인딩 할 때 - 일부 구성 매개 변수는 CLOUDAMQP_URL_ 패턴으로 제공됩니다 - 이것은 유형입니다 당신은 당신의 설정 파일을 넣어야 할 것입니다. 그래서 앱이 시작될 때 연결될 수 있습니다.

+0

grails에 rabbitmq 플러그인을 사용하고 있는데 URL을 통한 연결 구성을 지원하지 않는 것으로 보입니다. 호스트 이름, 사용자 이름 및 암호를 사용하여 연결을 구성하려고했지만 작동하지 않습니다. 동일한 구성이 로컬로 실행되는 rabbitmq 인스턴스에 대해 올바르게 작동합니다. –

+0

클라우드의 rabbitMQ는 동일해야합니다 - 호스트 이름을 지정할 수있는 한 - 그렇지 않습니까? –

+0

호스트 이름, 사용자 이름 및 암호를 지정하고 있지만이 연결 재설정 오류가 발생합니다. 동일한 구성이 로컬 RabbitMQ 서버에서 실행될 때 작동합니다. –

0

CloudAMQP 연결에 virtualHost를 지정해야합니다. 그것은 나를 위해 일했다.