使用Alpakka AMQP连接器和Akka Streams,我遇到了一个非常奇怪的问题。
当我的RabbitMQ消息代理重新启动时,源似乎重新启动正常。但是,一旦重新启动,流就永远不会完成,并且消息会在流中更远的分区中丢失。当我启动AMQP服务器时,我的Akka应用程序工作正常,但一切都搞砸了。
以下是我初始化AMQPSource
的方法:
val amqpMessageSource = builder.add {
val amqpSource = AmqpSource(
NamedQueueSourceSettings(connectionDetails, amqpInMessageQueue).withDeclarations(queueDeclaration),
bufferSize = 10
).map { message =>
fromIncomingMessage(message)
}.initialDelay(5.seconds)
amqpSource.recoverWithRetries(-1, { case _ => amqpSource }) // Retry every 5 seconds an infinity of times
}
我试图删除发生问题的分区,将流直接发送到与我的示例相关的流,甚至更奇怪:在这种情况下,AMQP客户端甚至不读取来自RabbitMQ的消息了。
我显然在这里遗漏了一些东西,但我尝试了许多不能解决我问题的不同事情。