Запуск Jetty Server на Amazon Server приводит к ошибке RabbitMQ - PullRequest
1 голос
/ 25 октября 2011

У меня есть простое веб-приложение, которое отправляет сообщения на сервер RabbitMQ.Я могу выполнить это приложение на моей локальной машине.Но когда я перемещаю настройки на Amazon Server, при запуске сервера появляется следующая ошибка:

Exception in thread "SimpleAsyncTaskExecutor-1" org.springframework.amqp.UncategorizedAmqpException: java.lang.NullPointerException
    at org.springframework.amqp.rabbit.support.RabbitUtils.convertRabbitAccessException(RabbitUtils.java:120)
    at org.springframework.amqp.rabbit.support.RabbitUtils.closeMessageConsumer(RabbitUtils.java:141)
    at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.stop(BlockingQueueConsumer.java:157)
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.restart(SimpleMessageListenerContainer.java:345)
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$600(SimpleMessageListenerContainer.java:49)
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:431)
    at java.lang.Thread.run(Thread.java:636)
Caused by: java.lang.NullPointerException
    at com.rabbitmq.client.impl.ValueWriter.writeShortstr(ValueWriter.java:48)
    at com.rabbitmq.client.impl.MethodArgumentWriter.writeShortstr(MethodArgumentWriter.java:76)
    at com.rabbitmq.client.impl.AMQImpl$Basic$Cancel.writeArgumentsTo(AMQImpl.java:2645)
    at com.rabbitmq.client.impl.Method.toFrame(Method.java:90)
    at com.rabbitmq.client.impl.AMQCommand.transmit(AMQCommand.java:168)
    at com.rabbitmq.client.impl.AMQChannel.quiescingTransmit(AMQChannel.java:301)
    at com.rabbitmq.client.impl.AMQChannel.quiescingTransmit(AMQChannel.java:283)
    at com.rabbitmq.client.impl.AMQChannel.quiescingRpc(AMQChannel.java:218)
    at com.rabbitmq.client.impl.AMQChannel.rpc(AMQChannel.java:209)
    at com.rabbitmq.client.impl.ChannelN.basicCancel(ChannelN.java:815)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.springframework.amqp.rabbit.connection.CachingConnectionFactory$CachedChannelInvocationHandler.invoke(CachingConnectionFactory.java:223)
    at $Proxy18.basicCancel(Unknown Source)
    at org.springframework.amqp.rabbit.support.RabbitUtils.closeMessageConsumer(RabbitUtils.java:128)
    ... 5 more

RabbitMQ, Erlang, Jetty server правильно настроены на Amazon Server.Я также включил порты 8088, 5672 на сервере (не знаю, связана ли эта ошибка с портами или что).Может кто-нибудь, пожалуйста, сообщите мне, какая проблема может вызвать эту ошибку.

1 Ответ

1 голос
/ 28 октября 2011

Эта ошибка вызвана тем, что в mnesia не определена очередь. Папка очереди в папке mnesia не находится на сервере Amazon.

Проект работает на локальной машине, потому что, возможно, при разработке проекта очередь сохраняется в mnesia с некоторым кодом, который я удалил позже. Когда я выполняю код на локальной машине, он всегда находит постоянную очередь и не выдает ошибок. Когда я изменяю имя очереди на локальной машине, она начинает выдавать ту же ошибку.

Итак, я обнаружил, что не объявлял очередь перед ее использованием. Поэтому я добавляю следующую строку в мой конфигурационный файл Spring:

<rabbit:queue name="myQueue"/>

После этого проекты работают нормально как на локальных, так и на Amazon машинах.

...