【问题标题】:Spring Cloud Stream : Sink loses RabbitMQ connectivitySpring Cloud Stream:Sink 失去 RabbitMQ 连接
【发布时间】:2017-10-23 18:36:21
【问题描述】:

我看到我的自定义 Spring 云流接收器与日志接收器流应用程序依赖项在 RabbitMQ 中断期间失去了 RabbitMQ 连接,尝试建立连接 5 次,然后停止其使用者。一旦 RabbitMQ 启动,我必须手动重新启动应用程序以使其成功连接。当我看到rabbitMQ绑定here的默认属性时,它给出了间隔时间,但没有无限重试的属性(我认为这是默认行为)。有人可以让我知道我在这里可能缺少什么以使其尝试无限连接吗?

Error faced during outage triggering consumer retry :
2017-08-08T10:52:07.586-04:00 [APP/PROC/WEB/0] [OUT] Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - home node 'rabbit@229ec9f90e07c75d56a0aa84dc28f602' of durable queue 'datastream.dataingestor.datastream' in vhost '8880756f-8a21-4dc8-9b97-95e5a3248f58' is down or inaccessible, class-id=50, method-id=10)

【问题讨论】:

标签: rabbitmq cloud-foundry spring-cloud spring-cloud-stream spring-cloud-dataflow


【解决方案1】:

您似乎有一个 RabbitMQ 集群,并且有问题的队列托管在一个宕机节点上。

如果队列是 HA,就不会出现这个问题。

侦听器容器(当前)不处理这种情况。如果它失去与 RabbitMQ 本身的连接,它将永远重试。

请打开JIRA Issue,我们会看看。容器应该将该错误视为连接问题。

【讨论】:

  • 我打开 this JIRA 并使用一个简单的 Spring AMQP 应用程序重现了该问题。
  • 嗨@GaryRussel,看看SimpleMessageListenerContainermissingQueuesFatal 似乎这是解决此连接问题的方法。我也遇到了与@rahul 类似的问题。这和你打开的JIRA有关吗?在 JIRA 修复之前,您会推荐一种解决方法吗?我试图声明我自己的 SimpleMessageListenerContainer bean,但 binder 似乎忽略了 bean 并直接调用构造函数。此外,SimpleMessageListenerContainer.checkMissingQueuesFatal() 似乎没有加载spring.amqp.global.properties,因为applicationContext 始终为空。
  • 是的; missingQueuesFatal=false 会工作;不幸的是,它没有被活页夹暴露出来;我关闭了 JIRA,因为我们可以通过在活页夹中公开更多属性来解决问题 - 请参阅 #104
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-12
  • 1970-01-01
  • 2016-01-15
  • 2015-08-26
  • 2015-10-23
相关资源
最近更新 更多