Amazon 服务器上的 Jetty 服务器启动出现 RabbitMQ 错误
我有一个简单的 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
RabbitMQ、Erlang、Jetty 服务器在 Amazon Server 上正确配置。我还在服务器上启用了端口8088、5672(不知道这个错误是否与端口有关或什么)。谁能指导我什么问题会导致此错误。
I have a simple web application that send messages to RabbitMQ Server. I can able to execute this appliation on my local machine. But when I move the setup to Amazon Server it gives me following error at server startup:
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 are properly configured on Amazon Server. I have also enabled ports 8088, 5672 on Server (don't know if this error is related to ports or what). Can anyone please guide me what problem can cause this error.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这个错误是因为mnesia中没有定义队列。 mnesia 文件夹下的队列文件夹不在亚马逊服务器上。
该项目正在本地计算机上运行,因为可能是在我开发项目时,队列保留在 mnesia 中,其中包含一些我稍后删除的代码。当我在本地计算机上执行代码时,它总是找到持久队列并且不会给出错误。当我更改本地计算机上的队列名称时,它开始给出相同的错误。
所以我发现我在使用队列之前没有声明队列。因此,我在 Spring 配置文件中添加以下行:
之后,该项目在本地和亚马逊计算机上都可以正常运行。
This error is because there is no queue defined in mnesia. The queue folder under mnesia folder is not on Amazon server.
The project is working on local machine because may be when I was developing my project, the queue persist in mnesia with some code that I have removed later. When I execute the code on local machine it always find the persist queue and doesn't give errors. When I change the queue name on local machine it starts giving me the same error.
So I found that I was not declaring the queue before using it. So I add following line in my Spring configuration file:
After that the projects works fine on both local and amazon machines.