Search in sources :

Example 1 with StandardThreadExecutor

use of com.mendmix.common.async.StandardThreadExecutor in project jeesuite-libs by vakinge.

the class MNSConsumer method start.

private void start() {
    CloudQueue queue = MNSClientInstance.createQueueIfAbsent(queueName);
    initTopicHanlders();
    fetchExecutor = new StandardThreadExecutor(1, 1, 0, TimeUnit.SECONDS, 1, new StandardThreadFactory("mns-Fetch-Executor"));
    int maxThread = ResourceUtils.getInt("aliyun.mns.consumer.processThreads", 50);
    semaphore = new Semaphore(maxThread);
    defaultProcessExecutor = new StandardThreadExecutor(1, maxThread, 60, TimeUnit.SECONDS, 1, new StandardThreadFactory("mns-defaultProcess-Executor"));
    fetchExecutor.submit(new Worker(queue));
    logger.info("start work for queue Ok -> queue:{}", queue.getQueueURL());
}
Also used : StandardThreadExecutor(com.mendmix.common.async.StandardThreadExecutor) StandardThreadFactory(com.mendmix.common.async.StandardThreadExecutor.StandardThreadFactory) Semaphore(java.util.concurrent.Semaphore) CloudQueue(com.aliyun.mns.client.CloudQueue)

Example 2 with StandardThreadExecutor

use of com.mendmix.common.async.StandardThreadExecutor in project jeesuite-libs by vakinge.

the class RedisConsumerAdapter method start.

@Override
public void start() throws Exception {
    int maxThread = MQContext.getMaxProcessThreads();
    this.fetchExecutor = new ThreadPoolExecutor(1, 1, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(), new StandardThreadFactory("messageFetcher"));
    this.asyncProcessExecutor = new StandardThreadExecutor(1, maxThread, 60, TimeUnit.SECONDS, 1000, new StandardThreadFactory("messageAsyncProcessor"));
    container.setConnectionFactory(connectionFactory);
    container.setSubscriptionExecutor(fetchExecutor);
    container.setTaskExecutor(asyncProcessExecutor);
    // 
    Set<String> topics = messageHandlers.keySet();
    MessageListenerAdapter listener;
    for (String topic : topics) {
        MessageHandlerDelegate delegate = new MessageHandlerDelegate(topic, messageHandlers.get(topic));
        listener = new MessageListenerAdapter(delegate, "onMessage");
        listener.afterPropertiesSet();
        container.addMessageListener(listener, new PatternTopic(topic));
    }
    container.afterPropertiesSet();
    container.start();
}
Also used : MessageListenerAdapter(org.springframework.data.redis.listener.adapter.MessageListenerAdapter) PatternTopic(org.springframework.data.redis.listener.PatternTopic) StandardThreadFactory(com.mendmix.common.async.StandardThreadExecutor.StandardThreadFactory) StandardThreadExecutor(com.mendmix.common.async.StandardThreadExecutor) ThreadPoolExecutor(java.util.concurrent.ThreadPoolExecutor) LinkedBlockingQueue(java.util.concurrent.LinkedBlockingQueue)

Example 3 with StandardThreadExecutor

use of com.mendmix.common.async.StandardThreadExecutor in project jeesuite-libs by vakinge.

the class AbstractConsumer method startWorker.

protected void startWorker() {
    // 异步处理拉取线程默认1
    int fetchCoreThreads = 1;
    int fetchMaxThreads = fetchCoreThreads;
    // 异步处理
    if (MQContext.isAsyncConsumeEnabled()) {
        int maxThread = MQContext.getMaxProcessThreads();
        semaphore = new Semaphore(maxThread);
        this.asyncProcessExecutor = new StandardThreadExecutor(1, maxThread, 60, TimeUnit.SECONDS, maxThread, new StandardThreadFactory("messageAsyncProcessor"));
        // 
        fetchMaxThreads = maxThread;
        logger.info("init asyncProcessExecutor finish -> maxThread:{}", maxThread);
    }
    // 
    this.fetchExecutor = new StandardThreadExecutor(fetchCoreThreads, fetchMaxThreads, 0, TimeUnit.SECONDS, fetchMaxThreads * 10, new StandardThreadFactory("messageFetcher"));
    fetchExecutor.execute(new Worker());
    logger.info("init fetchExecutor finish -> fetchMaxThreads:{}", fetchMaxThreads);
}
Also used : StandardThreadExecutor(com.mendmix.common.async.StandardThreadExecutor) StandardThreadFactory(com.mendmix.common.async.StandardThreadExecutor.StandardThreadFactory) Semaphore(java.util.concurrent.Semaphore)

Aggregations

StandardThreadExecutor (com.mendmix.common.async.StandardThreadExecutor)3 StandardThreadFactory (com.mendmix.common.async.StandardThreadExecutor.StandardThreadFactory)3 Semaphore (java.util.concurrent.Semaphore)2 CloudQueue (com.aliyun.mns.client.CloudQueue)1 LinkedBlockingQueue (java.util.concurrent.LinkedBlockingQueue)1 ThreadPoolExecutor (java.util.concurrent.ThreadPoolExecutor)1 PatternTopic (org.springframework.data.redis.listener.PatternTopic)1 MessageListenerAdapter (org.springframework.data.redis.listener.adapter.MessageListenerAdapter)1