You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by docscaa <do...@gmail.com> on 2018/02/05 11:55:18 UTC
Durable Subscription - Topic Messages not getting persisted in
database
I am not able to get the messages saved in database for a topic with an
offline durable subscriber. Because of this, if I restart the activemq, the
messages in the topic are lost (not delivered to durable subscriber), where
as the:
1. message expiry time has not yet reached
2. and durable subscription still exists
3. and the subscriber successfully reconnects.
*ActiveMQ Version : 5.13.1*
I checked the database table activemq_msgs after stopping activemq, the
table was empty. Additionally, I noted that the table activemq_acks contains
the entry for my durable subscription. Now I restarted activemq, it does not
shows any message in the topic (from web ui), but shows that the durable
subscription exists.
I am testing the scenario where a durable subscriber is both online and
offline, activemq gets restarted and the messages are not delivered to
durable subscriber. I tested this by sending 10000 messages in the topic and
before all get consumed, i stopped and restarted the activemq, I also
monitored the db table activemq_msgs, where not a single row got inserted
when I sent the messages
*Test Scenario#1 : Steps*
>. create a durable subscriber
>. send 10,000 messages to the topic (using activemq web admin ui)
>. No rows in activemq_msgs table (but web admin shows the messages are
enqueued in topic)
>. activemq_acks table contains one row which shows the durable
subscription details
>. restart the broker
>. durable subscriber reconnects and does not get any message.
>. web admin also shows zero messages in topic, but the durable still
subscriber exists with status as
active durable subscription.
*Test Scenario#2 : Steps*
>. create a durable subscriber
>. stop it
>. send messages to the topic
>. verify messages on mysql table
>. mysql table is empty (but web admin shows the messages are enqueued
in topic)
>. connect the durable subscriber to consume messages
>. All enqueued messages are dequeued to durable subscriber
>. mysql table is still empty.
*Configuration is as follows:*
<broker xmlns="http://activemq.apache.org/schema/core"
brokerName="Central-Dev-Broker" persistent="true"
offlineDurableSubscriberTimeout="-1"
offlineDurableSubscriberTaskSchedule="3000" useJmx="true">
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">" >
<pendingMessageLimitStrategy>
<constantPendingMessageLimitStrategy limit="1000"/>
</pendingMessageLimitStrategy>
</policyEntry>
<policyEntry queue=">">
<deadLetterStrategy>
<individualDeadLetterStrategy queuePrefix="DLQ."
useQueueForQueueMessages="true"/>
</deadLetterStrategy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
<managementContext>
<managementContext createConnector="false"/>
</managementContext>
<persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#mysql-ds"/>
</persistenceAdapter>
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage percentOfJvmHeap="70" />
</memoryUsage>
<storeUsage>
<storeUsage limit="100 gb"/>
</storeUsage>
<tempUsage>
<tempUsage limit="50 gb"/>
</tempUsage>
</systemUsage>
</systemUsage>
<transportConnectors>
<transportConnector name="openwire"
uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp"
uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
<plugins/>
<shutdownHooks>
<bean xmlns="http://www.springframework.org/schema/beans"
class="org.apache.activemq.hooks.SpringContextHook" />
</shutdownHooks>
</broker>
<bean id="mysql-ds" class="org.apache.commons.dbcp2.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url"
value="jdbc:mysql://localhost:3306/db_activemq?relaxAutoCommit=true"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
<import resource="jetty.xml"/>
--
Sent from: http://activemq.2283324.n4.nabble.com/ActiveMQ-Dev-f2368404.html