You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Badri <ba...@fxall.com> on 2008/06/17 23:36:27 UTC

Re: create policyentry for temp topics

Hi Filip

I am using topics & no queues.
Is there a way to drop messages for particular consumers / for particular
temporary topics based on certain conditions?

For example, if the message type is of type A or B, don't discard. If
message is of type C, discard. 

Can BrokerFilter be used for discarding mesages based on conditions for slow
consumers?

Can policy entry be configured in following way?

                    <policyEntry
topic="ActiveMQ.Advisory.Consumer.Topic.PRICES.XYZ"
producerFlowControl="false" memoryLimit="5mb">
                        <destination><topic
name="ID:dcmpdevapp02"/></destination>
                        <subscriptionRecoveryPolicy>
                            <queryBasedSubscriptionRecoveryPolicy
query="MType = 'A' OR MType = 'B'" />
                        </subscriptionRecoveryPolicy>
                        <pendingMessageLimitStrategy>
                            <prefetchRatePendingMessageLimitStrategy
multiplier="2"/>
                        </pendingMessageLimitStrategy>
                    </policyEntry>

Will configuring the xml be a good substitute than a plugin filter? Or
broker filter will do the same operation effortlessly & it is more flexible
than xml configuration?

Thanks.



Filip Hanik - Dev Lists wrote:
> 
> that's absolutely doable, what you'd need to do is set
> 
> producerFlowControl="false" on your policy entries,
> that's what we did.
> 
> then we setup the pendingMessageLimitStrategy to 1000, and our problem 
> was that when a message was discarded it went to the DLQ and eventually 
> caused OOME.
> 
> The BrokerFilter class (Broker interface) can let you do many different 
> things
> 
> let me know if you wish to elaborate some more
> 
> Filip
> 
> Badri wrote:
>> Thanks Filip for taking time & replying.
>>
>> My use case is I have 5 components in my application which are consumers
>> to
>> active mq & receive data through temporary topics. If 1 of the consumer
>> becomes slow, it blocks the publisher. I was thinking of configuring in
>> activemq.xml based on topic / destinations. I was planning to use
>> "pendingMessageLimitStrategy -   prefetchRatePendingMessageLimitStrategy
>> &
>> also eviction strategies". By doing this I am hoping that other fast
>> consumers receive data. Do you think plugin filters could also make a
>> difference since this is a data sensitive application?
>>
>> Thanks
>> Badri
>>
>>
>>
>> Filip Hanik - Dev Lists wrote:
>>   
>>> Sure Badri,
>>> our use case that we were dropping messages on the broker, so they go to 
>>> the Dead Letter Queue (DLQ),
>>> however, for temporary topics, we didn't want that to happen, and since 
>>> I wasn't able to configure a policy for temp topics where we could plug 
>>> in a discarding DLQ, then we just did it as a plugin.
>>>
>>> The configuration looks like
>>>
>>>     <plugins>
>>>       <bean
>>>         xmlns="http://www.springframework.org/schema/beans"
>>>         id="covalentDlqBroker"
>>>         class="com.covalent.activemq.discard.CovalentDLQBrokerPlugin">
>>>         <property name="dropAll" value="false"/>
>>>         <property name="dropTemporaryTopics" value="true"/>
>>>         <property name="dropTemporaryQueues" value="true"/>
>>>         <!--drops by destination name, using java regular expressions
>>>             
>>> http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html
>>>             delimited by spaces, so destination names cannot contain 
>>> spaces   
>>>         -->
>>>         <property name="dropOnly" value="some_alarm another_alarm"/>
>>>         <!--how frequently do we output how many messages we have 
>>> dropped - use 0 for disable-->
>>>         <property name="reportInterval" value="1000"/>
>>>       </bean> 
>>>     </plugins>  
>>>
>>> The library and source code can be found here
>>> http://people.apache.org/~fhanik/covalent-dlq.jar
>>>
>>> the nice thing with a broker plugin, is that you actually can control a 
>>> lot more than just DLQ :)
>>>
>>> hope this helps
>>> Filip
>>>
>>> Badri wrote:
>>>     
>>>> Hi Filip
>>>>
>>>> Can you give more details about the broker plugin filter?
>>>> I also need to create policy entry for temporary topics.
>>>>
>>>> Thanks for your help & time.
>>>> Badri
>>>>
>>>>
>>>> Filip Hanik - Dev Lists wrote:
>>>>   
>>>>       
>>>>> I couldn't get that to work properly, I even tried topic="ID>" since 
>>>>> that was the prefix, and didn't work either.
>>>>> I worked around the problem by creating a broker plugin filter, and 
>>>>> doing my operations in there
>>>>>
>>>>> Filip
>>>>>
>>>>> Hiram Chirino wrote:
>>>>>     
>>>>>         
>>>>>> I guess you want an entry for all topics or all queues right (since
>>>>>> the actually names are dynamic)?
>>>>>>
>>>>>> One way to do it might be to use topic='>' since that would match all
>>>>>> topics (temp topics are still topics).  But I guess we should have
>>>>>> something a little bette than that.
>>>>>>
>>>>>> On Fri, May 9, 2008 at 7:45 PM, Filip Hanik - Dev Lists
>>>>>> <de...@hanik.com> wrote:
>>>>>>   
>>>>>>       
>>>>>>           
>>>>>>> is there a way to create a
>>>>>>> <policyEntry> for temporary topics?
>>>>>>>
>>>>>>> Filip
>>>>>>>
>>>>>>>     
>>>>>>>         
>>>>>>>             
>>>>>>   
>>>>>>       
>>>>>>           
>>>>>     
>>>>>         
>>>>   
>>>>       
>>>
>>>     
>>
>>   
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/create-policyentry-for-temp-topics-tp17158262p17943349.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.