我的系统有以下几个部分:
到目前为止,在整个开发、测试和生产环境中,所有工作都很好。
我们刚刚在生产中连接了一个新的客户端系统,我们注意到它的日志开始报告“通道不活动时间太长”异常并中断连接。令人担忧的是,这一个客户端的总体效果是,它停止了代理上的所有消息消费,从而使整个系统停止。
这个客户端监听器(使用Spring缓存连接工厂)似乎连接到JMS代理ok,处理一些消息,然后3分钟报告异常。在ActiveMQ中打开调试并获得大量输出,但几乎没有任何提示代理在同一时间出现警告或错误。
相信ActiveMQ有一些内部保持活动状态,即使处于非活动状态的时间超过默认的30秒,也应该保持连接。
基础设施人员已经监控了该客户端的VPN,并确认它始终保持连接和连接。
不要认为是代码或Spring配置有问题,因为我们在不同的客户机中有许多监听器的其他实例,它们都表现良好。
假设我真的有两个问题:
编辑-添加异常堆栈跟踪:
2013-04-24 14:02:06,359 WARN - Encountered a JMSException - resetting the underlying JMS Connection (org.springframework.jms.connection.CachingConnectionFactory)
javax.jms.JMSException: Channel was inactive for too (>30000) long: jmsserver/xxx.xx.xx.xxx:61616
at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49)
at org.apache.activemq.ActiveMQConnection.onAsyncException(ActiveMQConnection.java:1833)
at org.apache.activemq.ActiveMQConnection.onException(ActiveMQConnection.java:1850)
at org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:101)
at org.apache.activemq.transport.ResponseCorrelator.onException(ResponseCorrelator.java:126)
at org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:101)
at org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:101)
at org.apache.activemq.transport.WireFormatNegotiator.onException(WireFormatNegotiator.java:160)
at org.apache.activemq.transport.InactivityMonitor.onException(InactivityMonitor.java:266)
at org.apache.activemq.transport.InactivityMonitor$4.run(InactivityMonitor.java:186)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:693)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:719)
at java.lang.Thread.run(Thread.java:813)
Caused by: org.apache.activemq.transport.InactivityIOException: Channel was inactive for too (>30000) long: jmsserver/xxx.xx.xx.xxx:61616
... 4 more
您只需要更改activemq。xml
(配置文件):
>
transportConnectors部分:
transportConnector name="ws" uri="ws://0.0.0.0:61614"
变化
transportConnector name="ws" uri="tcp://0.0.0.0:61614"
它适用于我的windows和linux虚拟机
您是否尝试过以下操作:
>
禁用InactivityMonitor<代码>线格式。maxInactivityDuration=0。
URL:< code > TCP://localhost:61616?wire format . maxinactivityduration = 0
如果您不想禁用,是否尝试将其设置为一个较高的数字,例如:URL:< code > TCP://localhost:61616?wire format . maxinactivityduration = 5000000(只是一个例子-使用您自己的时间,单位为毫秒)
此外,确保jar文件对于客户端和服务器都是相同的版本。
希望有帮助
我在玩QUARKUS,我试图创建摄取服务,它将数据发送到kafka或另一个RESTendpoint。我已经向项目添加了“夸克斯-小黑麦-反应性-消息传递-Kafka”和“夸克斯-反应性-消息传递-超文本传输协议”依赖项。我想只有一个特定的管道,即超文本传输协议- 现在的问题是,即使我有Kafka连接器注释在我的application.propertues,Kafka的健康检查仍然运行,并显示Kaf
那么我应该做些什么来实现这个目标呢?如有任何帮助/线索,请提前感谢
问题内容: 从MDN for NodeList: 在某些情况下,NodeList是一个实时集合,这意味着DOM中的更改会反映在集合中。例如,Node.childNodes处于活动状态: 在其他情况下,NodeList是静态集合,这意味着DOM中的任何后续更改都不会影响集合的内容。document.querySelectorAll返回一个静态NodeList。 所以....有点烦!是否有任何关于哪些
应用程序有一个JMS队列负责交付审计日志。应用程序将日志发送到JMS队列,该队列由MDB使用。 但是,发送的消息是大 XML 文件,大小从 20 MB 到 100 MB 不等。问题在于 JMS 队列使用消息的时间太长,从而导致内存不足错误。 我应该怎么做才能解决这个问题?
我正在寻找实现这一点的一般设计: 我想注册到ActivityRecognition API,以便在此API不时调用的IntentService中接收定期更新,而我的应用程序中的所有其他内容都是完全非活动的(这里的目标是避免耗尽设备上过多的电池电量)。 问题是,通过新的ActivityRecognition API设计,它与GooglePlayServices客户端绑定,例如: 从逻辑上讲,如果创建
问题内容: 是否有可能使MySQL中的行处于非活动状态?因此,该行不再用于查询结果吗?我的客户希望保留删除的成员在数据库中的存在,但是我不想编辑所有查询以检查该成员是否被删除。 还是有一种简单的方法将整个行数据移动到另一个“非活动”表中? 问题答案: 您可以重命名当前表,在其中创建“ deleted”列,然后创建一个与当前表同名的视图,并选择“ deleted = 0”。这样,您不必更改所有查询。