[ 
https://issues.apache.org/jira/browse/ARTEMIS-2891?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

João Santos updated ARTEMIS-2891:
---------------------------------
    Description: 
_ActiveMQ_ possesses a _activemq.prefetchSize_ client-side configurable 
parameter (via STOMP headers) which provides a way to configure the amount of 
messages which can be retrieved by the client without acknowledging the message 
reception.

Current implementation of _Artemis_ does not allow this behavior and instead 
only allows to set the _stompConsumerCredits,_ the maximum size in bytes which 
may be received by the consumer as messages, from server-side configuration in 
broker.xml. This represents a functionality loss for customers migrating from 
_ActiveMQ_ to Artemis as _stompConsumerCredits_ works based on message size in 
bytes and not message units and since it is not configurable via client-side 
STOMP headers.

This is unexpected since a consumer, depending on the processing, might want to 
retrieve a batch of messages in order to bulk process them for better 
performance (_i.e._ retrieving log messages from queue and storing them into a 
database, bulk inserting will be much faster than 1 by 1 inserts). In other 
cases, the consumer might want to only receive one message at most before 
acknowledging and so this parameter should be configurable from client-side in 
order to better adapt to the consumer processing and to achieve a more complete 
feature parity with _ActiveMQ Classic_.

  was:
_ActiveMQ_ possesses a _consumer.prefetchSize_ client-side configurable 
parameter (via STOMP headers) which provides a way to configure the amount of 
messages which can be retrieved by the client without acknowledging the message 
reception.

Current implementation of _Artemis_ does not allow this behavior and instead 
only allows to set the _stompConsumerCredits,_ the maximum size in bytes which 
may be received by the consumer as messages, from server-side configuration in 
broker.xml. This represents a functionality loss for customers migrating from 
_ActiveMQ_ to Artemis as _stompConsumerCredits_ works based on message size in 
bytes and not message units and since it is not configurable via client-side 
STOMP headers.

This is unexpected since a consumer, depending on the processing, might want to 
retrieve a batch of messages in order to bulk process them for better 
performance (_i.e._ retrieving log messages from queue and storing them into a 
database, bulk inserting will be much faster than 1 by 1 inserts). In other 
cases, the consumer might want to only receive one message at most before 
acknowledging and so this parameter should be configurable from client-side in 
order to better adapt to the consumer processing and to achieve a more complete 
feature parity with _ActiveMQ Classic_.


> Allow configuring stompConsumerCredits variable from client side (consumer)
> ---------------------------------------------------------------------------
>
>                 Key: ARTEMIS-2891
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-2891
>             Project: ActiveMQ Artemis
>          Issue Type: Improvement
>          Components: STOMP
>            Reporter: João Santos
>            Assignee: Justin Bertram
>            Priority: Major
>
> _ActiveMQ_ possesses a _activemq.prefetchSize_ client-side configurable 
> parameter (via STOMP headers) which provides a way to configure the amount of 
> messages which can be retrieved by the client without acknowledging the 
> message reception.
> Current implementation of _Artemis_ does not allow this behavior and instead 
> only allows to set the _stompConsumerCredits,_ the maximum size in bytes 
> which may be received by the consumer as messages, from server-side 
> configuration in broker.xml. This represents a functionality loss for 
> customers migrating from _ActiveMQ_ to Artemis as _stompConsumerCredits_ 
> works based on message size in bytes and not message units and since it is 
> not configurable via client-side STOMP headers.
> This is unexpected since a consumer, depending on the processing, might want 
> to retrieve a batch of messages in order to bulk process them for better 
> performance (_i.e._ retrieving log messages from queue and storing them into 
> a database, bulk inserting will be much faster than 1 by 1 inserts). In other 
> cases, the consumer might want to only receive one message at most before 
> acknowledging and so this parameter should be configurable from client-side 
> in order to better adapt to the consumer processing and to achieve a more 
> complete feature parity with _ActiveMQ Classic_.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to