Amazon 服务器上的 Jetty 服务器启动出现 RabbitMQ 错误

发布于 2024-12-11 15:25:01 字数 2586 浏览 6 评论 0原文

我有一个简单的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冷…雨湿花 2024-12-18 15:25:01

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

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

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

<rabbit:queue name="myQueue"/>

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

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:

<rabbit:queue name="myQueue"/>

After that the projects works fine on both local and amazon machines.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文