При добавлении сообщений в очередь в брокере 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%) и выдыхаемого кол = опубликованный счет.
кода я использую для публикации сообщений с пружинной интеграцией:
<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-х - см. Приведенный выше код. Также, возможно, стоит отметить, что в то время как сообщения получают успешный атрибут ExpiredCount в очереди по шагам JConsole для каждого сообщения после истечения срока действия (60 секунд) – James