Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package org.kie.remote.services.jms;
 
 import java.util.Map;
 
 import  javax.ejb.ConcurrencyManagement;
 import  javax.ejb.ConcurrencyManagementType;
import  javax.ejb.Lock;
import  javax.ejb.LockType;
import  javax.ejb.Singleton;
import  javax.ejb.Startup;
import  org.slf4j.Logger;
import  org.slf4j.LoggerFactory;

This class helps make sure that messages which fail are not endlessly retried.
@Singleton
@Startup
@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
public class RetryTrackerSingleton {
    private static final Logger logger = LoggerFactory.getLogger(RetryTrackerSingleton.class);
    private final static int MSG_RETRY_CACHE_LIMIT = 1000;
    private HashMap<StringIntegermsgIdRetryMap = new LinkedHashMap<StringInteger>() {
        /* generated serial version UID */
        private static final long serialVersionUID = 6031151588684920520L;
        @Override protected boolean removeEldestEntry (Map.Entry<String,Integereldest) {
           return size() > ;
        }
    };
    private Integer RETRY_LIMIT = null;
    private int RETRY_LIMIT_DEFAULT = 2;
    private static String RETRY_LIMIT_NAME_PROPERTY = "kie.services.jms.retries.limit";
    public void init() {
        String retryLimitStr = System.getProperty(, Integer.toString());
        try {
             = Integer.parseInt(retryLimitStr);
        } catch (Exception e) {
            .warn("Unable to parse '" + retryLimitStr + "' as number for " +  + " property.");
             = ;
        }
        .info("JMS message retry limit set to " + );
    }
    @Lock(LockType.READ)
    public int getMaximumLimitRetries() { 
        return ;
    }
    
    @Lock(LockType.READ)
    public boolean maxRetriesReached(String msgId) {
        Integer retries = .get(msgId);
        if (retries == null) {
            return false;
        }
        if (retries < ) {
            return false;
        }
        return true;
    }
    @Lock(LockType.WRITE)
    public int incrementRetries(String msgId) {
        Integer retries = .get(msgId);
        if (retries == null) {
            retries = 0;
        }
        ++retries;
        .put(msgIdretries);
        return retries;
    }
    
    @Lock(LockType.WRITE)
    public void clearRetries(String msgId) {
        .remove(msgId);
    }
New to GrepCode? Check out our FAQ X