RabbitMQ突然没有收到来自Spring AMQP的消息

时间:2012-10-10 15:15:39

标签: rabbitmq spring-amqp spring-rabbit

我一直在将我的开发环境从Linux迁移到Mac,突然间我面临着奇怪的RabbitMQ行为。

我有Ubuntu盒子,RabbitMQ 2.8.7-1已经运行,我在同一个盒子上做了开发。我一直在运行我的测试代码(如下所示),Rabbit很高兴收到所有消息。

// using spring-rabbit 1.1.1.RELEASE
AmqpTemplate amqpTemplate = (AmqpTemplate) context.getBean("amqpTemplate");
amqpTemplate.convertAndSend("bar.queue", "Foo message");

现在我转移到Mac盒子(主机A),我在其中运行带有Linux的VirtualBox(主机B),运行RabbitMQ,其配置与之前的Linux盒子相同。我在Mac上运行我的开发环境,它在VM内调用Rabbit :)。但没有任何结果,所以我使用Wireshark来追踪通信,这似乎没问题:

. . . .
B > A: Connection.Start
A > B: Connection.Start-Ok
B > A: Connection.Tune
A > B: Connection.Tune-Ok
A > B: Connection.Open
B > A: Connection.Open-Ok
A > B: Channel.Open
B > A: Channel.Open-Ok
A > B: Basic.Publish (bar.queue)
A > B: Content-Header (text/plain)
A > B: Content-Body (Foo message)
A > B: Channel.Close (200-OK)
B > A: [[TCP ACK for Channel.Close]]
. . . .

所以它看起来像是收到了消息,但可能没有经纪人处理?登录客户端也告诉我该消息已发布。

17:09:37.450 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'amqpTemplate'
17:09:37.576 [main] DEBUG o.s.a.r.c.CachingConnectionFactory - Creating cached Rabbit Channel from AMQChannel(amqp://guest@hostB:5672/,1)
17:09:37.611 [main] DEBUG o.s.amqp.rabbit.core.RabbitTemplate - Executing callback on RabbitMQ Channel: Cached Rabbit Channel: AMQChannel(amqp://guest@hostB:5672/,1)
17:09:37.612 [main] DEBUG o.s.amqp.rabbit.core.RabbitTemplate - Publishing message on exchange [], routingKey = [bar.queue]

我完全不知道从哪里开始照顾问题,为什么以前工作而不是现在,哪里可能有问题?

编辑: 好吧,我试图从RabbitMQ教程中实现简单的发送器,看起来它挂在close()上,因为应用程序仍然运行并且没有达到close()后的代码。

channel.basicPublish(exchangeName, routingKey, MessageProperties.PERSISTENT_TEXT_PLAIN, messageBodyBytes);
channel.close();
// this is never reached and app still running :-o
conn.close();

1 个答案:

答案 0 :(得分:1)

您的VirtualBox上有多少可用磁盘空间?

这与我的问题非常相似。我在Windows 7 x64下从C#调用BasicPublish方法。 RabbitMQ安装在同一台机器上。代码与你的代码挂在同一条线上。当我在TxSelect和TxCommit方法之间放置BasicPublish时,程序挂在TxCommit上。

过了一段时间后,我意识到我的硬盘几乎已满(无法记住,但大约有200MB的可用空间)。我释放了一些空间,这有所帮助。