當向沒有訂閱者的ActiveMQ代理中的隊列添加消息時,隊列填滿並最終導致生產者線程掛起,無法發佈更多消息。當沒有訂閱者時在ActiveMQ上過期消息
爲了解決這個問題,我設置了一個到期的消息,認爲這會釋放內存,但不幸的是這不起作用。有誰知道我可以如何解決這個問題?
我的經紀人在ActiveMQ的版本是5.7和代理程序定義是:
<bean id="mqBroker" class="org.apache.activemq.broker.BrokerService" init-method="start" destroy-method="stop">
<property name="brokerName" value = "mainBroker"/>
<property name="persistent" value="false"/>
<property name="useJmx" value="false"/>
<property name="transportConnectorURIs">
<list>
<value>tcp://localhost:7000</value>
</list>
</property>
</bean>
在JConsole中尋找時,它無法任何更多的消息發佈到代理的內存使用情況看起來很好(0%使用)和過期數=公佈的數量。
我用來發布消息的代碼與Spring的集成:
<jms:outbound-channel-adapter
channel="jsonChannel"
connection-factory="jmsConnectionFactory"
pub-sub-domain="false"
destination-name="MY_QUEUE"
time-to-live="60000"
wxplicit-qos-enabled="true" />
我已將時間設置爲60秒 - 請參閱上面的代碼編輯。也可能值得注意的是,雖然消息正在生成成功,但JConsole隊列中的ExpiredCount屬性在到期時間(60s)之後會爲每條消息遞增, – James