溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

springboot中怎么利用rabbitmq實(shí)現(xiàn)限流與并發(fā)

發(fā)布時(shí)間:2021-07-08 16:50:50 來源:億速云 閱讀:674 作者:Leah 欄目:云計(jì)算

springboot中怎么利用rabbitmq實(shí)現(xiàn)限流與并發(fā),相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

一 并發(fā)

步驟:

1 、在rabbitListener中配置concurency=“min-max”

如下代表最小并發(fā)數(shù)是5

@Component
public class pricon {
    @RabbitListener(queues ="textQueue",concurrency = "5-10")
    public void hand(String str){
        System.out.println(Thread.currentThread().getName()+"接受到了一個(gè)消息:"+str+"現(xiàn)在時(shí)間:"+System.currentTimeMillis()/1000);
    }
}

2、測(cè)試

@Component
public class priConsumer {
    private static final String EXCHANGE = "textExchange";

    public static final String QUEUE = "textQueue";

    private static final String ROUTING_KEY = "textQueue";
    @Autowired
    RabbitTemplate template;
    public void test(){
        for(int i=50;i>1;i--){
            int finalI = i;
            template.convertAndSend(EXCHANGE,ROUTING_KEY,"queue:"+i);
        }

    }
}


3、在rabbitmq的控制面板中會(huì)顯示:

springboot中怎么利用rabbitmq實(shí)現(xiàn)限流與并發(fā)

二 限流

1、 配置Bean

setPrefetchCount 表示單位時(shí)間最多能處理多少消息

@Autowired
    CachingConnectionFactory connectionFactory;
    @Bean(name = "mqlistenerContainer")
    public SimpleRabbitListenerContainerFactory simpleRabbitListenerContainerFactory(){
        SimpleRabbitListenerContainerFactory factory=new SimpleRabbitListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setPrefetchCount(10);
        return factory;
    }

2、在rabbitListener中配置工廠

 @RabbitListener(queues ="textQueue",concurrency = "5-10",containerFactory = "mqlistenerContainer")
    public void hand(String str){
        System.out.println(Thread.currentThread().getName()+"接受到了一個(gè)消息:"+str+"現(xiàn)在時(shí)間:"+System.currentTimeMillis()/1000);
    }

在控制面板中會(huì)顯示:

springboot中怎么利用rabbitmq實(shí)現(xiàn)限流與并發(fā)

springboot中怎么利用rabbitmq實(shí)現(xiàn)限流與并發(fā)

3結(jié)果:

springboot中怎么利用rabbitmq實(shí)現(xiàn)限流與并發(fā)

看完上述內(nèi)容,你們掌握springboot中怎么利用rabbitmq實(shí)現(xiàn)限流與并發(fā)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI