【问题标题】:Jetty Server Startup on Amazon Server gives RabbitMQ ErrorAmazon Server 上的 Jetty Server Startup 出现 RabbitMQ 错误
【发布时间】:2011-12-14 18:09:55
【问题描述】:

我有一个简单的 Web 应用程序,可以将消息发送到 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

在 Amazon Server 上正确配置了 RabbitMQ、Erlang、Jetty 服务器。我还在服务器上启用了端口 8088、5672(不知道这个错误是与端口有关还是什么)。谁能指导我什么问题会导致这个错误。

【问题讨论】:

    标签: erlang amazon-ec2 jetty rabbitmq


    【解决方案1】:

    这个错误是因为 mnesia 中没有定义队列。 mnesia 文件夹下的队列文件夹不在亚马逊服务器上。

    该项目正在本地计算机上运行,​​因为可能是在我开发项目时,队列在 mnesia 中持续存在,其中一些代码我稍后已删除。当我在本地机器上执行代码时,它总是会找到持久队列并且不会出错。当我在本地机器上更改队列名称时,它开始给我同样的错误。

    所以我发现我没有在使用它之前声明队列。所以我在我的 Spring 配置文件中添加了以下行:

    <rabbit:queue name="myQueue"/>
    

    之后,项目在本地和亚马逊机器上都可以正常运行。

    【讨论】:

      猜你喜欢
      • 2016-05-22
      • 2019-07-06
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 2013-07-13
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多