All Downloads are FREE. Search and download functionalities are using the official Maven repository.

devutility.external.redis.queue.list.JedisPoolListQueueConsumer Maven / Gradle / Ivy

The newest version!
package devutility.external.redis.queue.list;

import java.io.IOException;

import devutility.external.redis.com.RedisQueueOption;
import devutility.external.redis.queue.JedisQueueConsumer;
import devutility.external.redis.queue.JedisQueueConsumerEvent;
import devutility.external.redis.utils.pool.JedisPoolUtil;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

/**
 * 
 * JedisPoolListQueueConsumer
 * 
 * @author: Aldwin Su
 * @version: 2019-09-25 20:24:25
 */
public final class JedisPoolListQueueConsumer extends JedisQueueConsumer {
	/**
	 * JedisPool object for connecting Redis server.
	 */
	private JedisPool jedisPool;

	/**
	 * Constructor
	 * @param jedisPool JedisPool object to get Jedis object.
	 * @param redisQueueOption RedisQueueOption object.
	 * @param consumerEvent Custom consumer event implementation.
	 */
	public JedisPoolListQueueConsumer(JedisPool jedisPool, RedisQueueOption redisQueueOption, JedisQueueConsumerEvent consumerEvent) {
		super(null, redisQueueOption, consumerEvent);
		this.jedisPool = jedisPool;
	}

	/**
	 * Constructor
	 * @param jedisPool JedisPool object to get Jedis object.
	 * @param key Redis key of queue.
	 * @param database Redis database.
	 * @param consumerEvent Custom consumer event implementation.
	 */
	public JedisPoolListQueueConsumer(JedisPool jedisPool, String key, int database, JedisQueueConsumerEvent consumerEvent) {
		this(jedisPool, new RedisQueueOption(key, database), consumerEvent);
	}

	@Override
	public void listen() throws Exception {
		while (isActive()) {
			Jedis jedis = JedisPoolUtil.jedis(jedisPool, redisQueueOption.getDatabase());

			try (JedisListQueueConsumer consumer = new JedisListQueueConsumer(jedis, redisQueueOption, consumerEvent)) {
				consumer.listen();
			} catch (Exception e) {
				if (!isExceptionRetryApproved(e)) {
					throw e;
				}

				log("System try to create a new connection and continue working due to the following information:", e);
			}
		}
	}

	@Override
	public void close() throws IOException {
		setActive(false);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy