Java ActiveMQ消息不断被清除
如何避免在activemq中获取清除消息 我有一个前端应用程序(应用程序A),它通过ActiveMQ(版本5.15.8)向后端应用程序(应用程序B)请求数据 当我发出检索少量数据的请求时,当应用程序a从应用程序B获取数据并显示数据时,一切正常 然而,当应用程序A(通过amq)向应用程序B发出检索大量数据的请求时,我会在ActiveMQ active.log中不断收到此清除的消息(如下所示),然后应用程序A从未收到数据 我应该注意,应用程序B从应用程序A获取请求,然后获取请求的数据并将其转发回ActiveMQ(然后转发到应用程序A)。但在将数据发送到ActiveMQ后,会出现以下清除消息: 2020-03-12 16:29:03738 |信息| 临时工-queue://ID:mcam443-PC-61788-1748020379598-6:1:1关于处置,清除 共1封挂起的邮件: org.apache.activemq.broker.region.cursors。VMPendingMessageCursor@5d237edf |org.apache.activemq.broker.region.TempQueue | activemq BrokerService[activemqPrimary]任务-89 下面是activemq.xml文件的“我的目标策略”部分Java ActiveMQ消息不断被清除,java,activemq,Java,Activemq,如何避免在activemq中获取清除消息 我有一个前端应用程序(应用程序A),它通过ActiveMQ(版本5.15.8)向后端应用程序(应用程序B)请求数据 当我发出检索少量数据的请求时,当应用程序a从应用程序B获取数据并显示数据时,一切正常 然而,当应用程序A(通过amq)向应用程序B发出检索大量数据的请求时,我会在ActiveMQ active.log中不断收到此清除的消息(如下所示),然后应用程序A从未收到数据 我应该注意,应用程序B从应用程序A获取请求,然后获取请求的数据并将其转发回Ac
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry queue=">" expireMessagesPeriod="120000" producerFlowControl="true" memoryLimit="5mb">
<pendingQueuePolicy>
<vmQueueCursor/>
</pendingQueuePolicy>
<pendingMessageLimitStrategy>
<constantPendingMessageLimitStrategy limit="-1"/>
</pendingMessageLimitStrategy>
</policyEntry>
<policyEntry queue="D.>" expireMessagesPeriod="120000" producerFlowControl="true" memoryLimit="5mb">
<pendingQueuePolicy>
<vmQueueCursor/>
</pendingQueuePolicy>
<pendingMessageLimitStrategy>
<constantPendingMessageLimitStrategy limit="-1"/>
</pendingMessageLimitStrategy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
我将ExpireMessagePeriod设置为4分钟,我发现应用程序B通常在2分钟内响应。所以这似乎没有帮助
我还将constantPendingMessageLimitStrategy设置为-1,以禁用消息丢弃()
同样,当应用程序A发出只返回少量数据的请求时,不会出现清除消息
如何避免在大型请求中获取清除数据?或者根本不需要?这里没有太多信息,但从有限的日志数据来看,清除消息似乎表明您已关闭连接,但没有使用来自临时目标的所有消息,因此,当连接关闭时,它创建的临时目标将被释放,其中一个恰好有1个未使用消息避免获取该消息的唯一方法是确保已使用临时队列中的所有消息