- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们在我们的项目中使用 STOMP 代理中继(外部代理 - ActiveMQ 5.13.2)请参阅 https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#websocket-stomp-handle-broker-relay
我们使用以下堆栈:
org.springframework:spring-jms:jar:5.1.8.RELEASE
org.springframework:spring-messaging:jar:5.1.8.RELEASE
io.projectreactor:reactor-core:jar:3.2.8.RELEASE
io.projectreactor.netty:reactor-netty:jar:0.8.6.RELEASE
io.netty:netty-all:jar:4.1.34.Final
有时(假设每两周一次)我们可以在 tomcat catalina.out 日志中观察到错误
2019-08-21 13:38:58,891 [tcp-client-scheduler-5] ERROR com.*.websocket.stomp.SimpMessagingSender - BrokerAvailabilityEvent[available=false, StompBrokerRelay[ReactorNettyTcpClient[reactor.netty.tcp.TcpClientDoOn@219abb46]]]
2019-08-21 13:38:58,965 [tcp-client-scheduler-1] ERROR org.springframework.messaging.simp.stomp.StompBrokerRelayMessageHandler - Transport failure: java.lang.IllegalStateException: No TcpConnection available
出现错误后,STOMP 通信中断(系统
连接 - 单个 TCP 连接不可用)
似乎一切都是从我们更新堆栈时开始的:
org.springframework:spring-jms:jar:5.0.8.RELEASE
org.springframework:spring-messaging:jar:5.0.8.RELEASE
io.projectreactor:reactor-core:jar:3.1.8.RELEASE
io.projectreactor.netty:reactor-netty:jar:0.7.8.RELEASE
io.netty:netty-all:jar:4.1.25.Final
ActiveMQ版本未更改
spring 报告了一个错误,当 system
连接丢失时,自动重新连接失败,请参阅: https://github.com/spring-projects/spring-framework/issues/22080
现在有 3 个问题:
编辑2019年9月23日
发生错误后,端口 61613(STOMP) 的 TCP 堆栈如下(请注意 CLOSE_WAIT 状态):
netstat -an | grep 61613
tcp6 0 0 :::61613 :::* LISTEN
tcp6 2 0 127.0.0.1:49084 127.0.0.1:61613 CLOSE_WAIT
最佳答案
尽管我有一些意见可以帮助您找到前进的方向,但我不能说我有足够的信息来回答您的问题。
ActiveMQ 通常在托管/分布式环境中使用,因此负载和扩展应始终成为考虑因素。
大多数数据库/消息队列/等..将需要某种负载调整 - 即使在 AWS 上(通过请求更高的限制),尽管其中大部分是由托管提供商处理的。
但是我离题了...
在本例中,您似乎正在为队列使用 TCP 传输:
https://activemq.apache.org/tcp-transport-reference
如您所见,所有这些设置都可以调整并具有默认值。
因此,如果从连接到 AMQ 的 Spring 端记录问题,您需要缩小错误发生的时间,然后查看 AMQ 指标和日志。
如果您没有 AMQ 监控,我建议:
为您的分布式系统设置正确的工具以使您的团队能够搜索/查找错误/日志(并记录如何执行此操作)非常有帮助。超越此(对于成熟系统)的一步是在监控之上添加一个层,以便您的系统在出现问题时开始告诉您,而不是相反(寻找问题)。
这可能有点冗长 - 但这一切都会导致我询问您是否有 AMQ 系统发生故障时的日志/指标。如果您这样做,请发布它们!
我提出这些建议是因为:
还可以考虑添加 Spring Actuator 来在 Spring 端监视消息客户端,因为客户端连接池和高级设置也经常存在限制/设置,特别是当您放大/缩小实例大小等时......以及您的实例将处理更多/更少的负载,您的客户端库可能需要一些设置调整。
https://www.baeldung.com/spring-boot-actuators
Exposing metrics about current Websocket connections with Spring
您还可以捕获异常并拆除并重新创建连接/设置 - 尽管这不是我在不了解连接失败时的情况和统计信息的情况下推荐的第一件事。
关于java - StompBrokerRelayMessageHandler - 传输失败 : java. lang.IllegalStateException:没有可用的 TcpConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57992857/
前言 经过前面几个实验的铺垫,终于到了将他们组合起来的时候了。Lab4 将实现 TCP Connection 功能,内部含有 TCPReceiver 和 TCPSender ,可以与
我们在我们的项目中使用 STOMP 代理中继(外部代理 - ActiveMQ 5.13.2)请参阅 https://docs.spring.io/spring/docs/current/spring-
我是一名优秀的程序员,十分优秀!