Solace - Spring整合缓慢

时间:2018-05-07 09:11:23

标签: java performance spring-boot spring-integration spring-jms

我们在模块和子系统之间使用安慰作为消息总线。我们的应用程序基于Spring Boot和Spring集成(消息驱动通道适配器,DefaultMessageListenerContainer,CachingConnectionFactory)。

我们观察到在几天内发生一次10-15分钟间隔的随机缓慢。在某些基于日志的情况下,只有模块1的发送器到模块2的接收器需要15分钟,并且它们之间也没有服务激活器。

有人有过类似的问题吗?有关解决此问题的任何建议吗?

1 个答案:

答案 0 :(得分:0)

这确实是一个很好的问题,它帮助我理解了SI和JMS的几个方面。我正在写这个答案,希望有类似问题的人得到一些信息。在我们的方案中,存在多个问题,以下是重点内容:

  • 删除DMLC的缓存连接工厂在很大程度上解决了这个问题。
  • 我们正在使用从DMLC到流程完成的阻塞流程。在某些情况下,我们的服务激活器在持久性期间卡住了。
  • 我们的消息代理设置为18的预提取设置,它允许多达18条消息无需确认即发送给消费者。在我们的示例中,一条消息卡在了我们的服务激活器中,该流被阻止了,但jms使用者不断获取多达18条消息,而没有将其传递给DMLC代理。我们将预取次数减少到1,这有助于将滞留消息的数量减少到一个。
  • 我们怀疑在某些不活动情况下是否会断开mysql连接,如该线程MySQL database drops connection after 8 hours. How to prevent it?中所述。我们通过添加验证查询来添加数据源保持活动设置。这有助于我们将滞留消息减少到零。