Hi,

I am a developer working for Yahoo! Inc. and we are currently evaluating 
ActiveMQ for using it as streaming solution for Yahoo serving applications. We 
have a requirement for the streaming platform to be able to persist messages on 
a topic, till the set message expiry is up, even though there isn't a durable 
subscriber for that Topic. Is it sufficient for the Producer to do a 
Producer.setDeliveryMode(DeliveryMode.PERSISTENT) to get this behaviour? When 
reading source I did notice this section in 
org.apache.activemq.broker.region.Topic.java

if (topicStore != null && message.isPersistent() && 
!canOptimizeOutPersistence()) {
            if (systemUsage.getStoreUsage().isFull()) {
                final String logMessage = "Usage Manager Store is Full. 
Stopping producer (" + message.getProducerId() + ") to prevent flooding " + 
getActiveMQDestination().getQualifiedName() + "."
                        + " See 
http://activemq.apache.org/producer-flow-control.html for more info";
                if (systemUsage.isSendFailIfNoSpace()) {
                    throw new javax.jms.ResourceAllocationException(logMessage);
                }

                waitForSpace(context, systemUsage.getStoreUsage(), logMessage);
            }
            topicStore.addMessage(context, message);
}

private boolean canOptimizeOutPersistence() {
        return durableSubcribers.size() == 0;
}



ActiveMQ version 5.3.2
JAVA version 1.6_0.22
OS - RHEL 4 Update 8

Thanks,
Anirudha

Reply via email to