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

Timothy Bish updated AMQ-3911:
------------------------------

    Description: 
We have 1 topic, 100 producer and  1 consumer. We use non-transacted sessions, 
NON_PERSISTENT messages and CLIENT_ACKNOWLEDGE mode. The problem is that after 
a while (1 day or more) some messages are not acknowledged and inflight count 
goes up till maximum memory of the topic is reach. Consumer code is something 
like this:

{code}
Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
                MessageConsumer consumer = 
session.createConsumer(JMSProviderUtil.getTopic(AGENT_STATUS_TOPIC));
                consumer.setMessageListener(new MessageListener() {

                        public void onMessage(Message message) {
                                try {
                                        if (message instanceof TextMessage && 
message.getJMSRedelivered() == false) {
                                                TextMessage textMessage = 
(TextMessage) message;
                                                String host = 
textMessage.getText();
                                                String switchId = 
host2idMap.get(host);
                                                if (switchId != null) {
                                                        
id2lastHeartbeatMap.put(switchId, System.currentTimeMillis());
                                                }
                                        }
                                } catch (JMSException e) {
                                        
GeneralLogger.LOGGER.logError(e.getMessage(), e);
                                } finally {
                                        try {
                                                message.acknowledge();
                                        } catch (JMSException e) {
                                                
GeneralLogger.LOGGER.logError(e.getMessage(), e);
                                        }
                                }
                        }
                });

{code}

  was:
We have 1 topic, 100 producer and  1 consumer. We use non-transacted sessions, 
NON_PERSISTENT messages and CLIENT_ACKNOWLEDGE mode. The problem is that after 
a while (1 day or more) some messages are not acknowledged and inflight count 
goes up till maximum memory of the topic is reach. Consumer code is something 
like this:

Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
                MessageConsumer consumer = 
session.createConsumer(JMSProviderUtil.getTopic(AGENT_STATUS_TOPIC));
                consumer.setMessageListener(new MessageListener() {

                        public void onMessage(Message message) {
                                try {
                                        if (message instanceof TextMessage && 
message.getJMSRedelivered() == false) {
                                                TextMessage textMessage = 
(TextMessage) message;
                                                String host = 
textMessage.getText();
                                                String switchId = 
host2idMap.get(host);
                                                if (switchId != null) {
                                                        
id2lastHeartbeatMap.put(switchId, System.currentTimeMillis());
                                                }
                                        }
                                } catch (JMSException e) {
                                        
GeneralLogger.LOGGER.logError(e.getMessage(), e);
                                } finally {
                                        try {
                                                message.acknowledge();
                                        } catch (JMSException e) {
                                                
GeneralLogger.LOGGER.logError(e.getMessage(), e);
                                        }
                                }
                        }
                });

    
> Messages are not acknowelge and inflight count goes up till max memory is 
> reached for topic
> -------------------------------------------------------------------------------------------
>
>                 Key: AMQ-3911
>                 URL: https://issues.apache.org/jira/browse/AMQ-3911
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker, JMS client
>    Affects Versions: 5.4.2
>         Environment: OS: Solaris 10
> Java Version: 1.6
>            Reporter: Ali Reza.T
>            Priority: Blocker
>
> We have 1 topic, 100 producer and  1 consumer. We use non-transacted 
> sessions, NON_PERSISTENT messages and CLIENT_ACKNOWLEDGE mode. The problem is 
> that after a while (1 day or more) some messages are not acknowledged and 
> inflight count goes up till maximum memory of the topic is reach. Consumer 
> code is something like this:
> {code}
> Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
>               MessageConsumer consumer = 
> session.createConsumer(JMSProviderUtil.getTopic(AGENT_STATUS_TOPIC));
>               consumer.setMessageListener(new MessageListener() {
>                       public void onMessage(Message message) {
>                               try {
>                                       if (message instanceof TextMessage && 
> message.getJMSRedelivered() == false) {
>                                               TextMessage textMessage = 
> (TextMessage) message;
>                                               String host = 
> textMessage.getText();
>                                               String switchId = 
> host2idMap.get(host);
>                                               if (switchId != null) {
>                                                       
> id2lastHeartbeatMap.put(switchId, System.currentTimeMillis());
>                                               }
>                                       }
>                               } catch (JMSException e) {
>                                       
> GeneralLogger.LOGGER.logError(e.getMessage(), e);
>                               } finally {
>                                       try {
>                                               message.acknowledge();
>                                       } catch (JMSException e) {
>                                               
> GeneralLogger.LOGGER.logError(e.getMessage(), e);
>                                       }
>                               }
>                       }
>               });
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to