国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
ActiveMQ第六彈:設(shè)置多個并行的消費者

ActiveMQ第六彈:設(shè)置多個并行的消費者

消息隊列本來就是一種經(jīng)典的生產(chǎn)者與消費者模式。生產(chǎn)者向消息隊列中發(fā)送消息,消費者從消息隊列中獲取消息來消費。

消息的傳送一般由一個代理來實現(xiàn)的,那就是Message broker(即消息代理)。Message broker有兩大職責(zé),一是消息路由,二是數(shù)據(jù)轉(zhuǎn)換。這就好比A給B寄信,如果不使用郵局的話,就要自己想辦法送達(dá),費時費力,而通過郵局的話,只要B的地址在郵局中注冊過,那么天涯海角也能送達(dá)。這里的郵局扮演的角色就像消息系統(tǒng)中的Message broker。

眾所周知,消息隊列是典型的’send and forget’原則的體現(xiàn),生產(chǎn)者只管發(fā)送,不管消息的后續(xù)處理。為了最大效率的完成對消息隊列中的消息的消費,一般可以同時起多個一模一樣的消費者,以并行的方式來拉取消息隊列中的消息。這樣的好處有多個:

  1. 加快處理消息隊列中的消息。

  2. 增強穩(wěn)定性,如果一個消費者出現(xiàn)問題,不會影響對消息隊列中消息的處理。

使用Spring JMS來配置多個Listener實例其實也相當(dāng)簡單,只需要配置下MessageListenerContainer就行。

123456
<bean class="org.springframework.jms.listener.SimpleMessageListenerContainer">    <property name="connectionFactory" ref="connectionFactory"/>    <property name="destinationName" value="${jms.queue.name}"/>    <property name="messageListener" ref="messageReceiver"/>    <property name="concurrentConsumers" value="4"/></bean>

多配置一個屬性concurrentConsumers,設(shè)置值為4,就是同時啟動4個Listener實例來消費消息。

使用MessageSender來發(fā)送100條消息,可以檢查消息處理的順序會發(fā)生變化。

123
    for (int i = 0; i < 100; i++) {        messageSender.send(String.format("message %d",i));    }
123456789
...Received: message 4Received: message 7Received: message 6Received: message 5Received: message 8Received: message 10Received: message 9…

除了設(shè)置一個固定的Listener數(shù)量,也可以設(shè)置一個Listener區(qū)間,這樣MessageListenerContainer可以根據(jù)消息隊列中的消息規(guī)模自動調(diào)整并行數(shù)量。

123456
    <bean class="org.springframework.jms.listener.SimpleMessageListenerContainer">        <property name="connectionFactory" ref="connectionFactory"/>        <property name="destinationName" value="${jms.queue.name}"/>        <property name="messageListener" ref="messageReceiver"/>        <property name="concurrency" value="4-8"/>    </bean>

這次使用的是concurrency屬性,4-8表示最小并發(fā)數(shù)是4,最大并發(fā)數(shù)為8,當(dāng)然也可以給一個固定值,比如5,這樣就相當(dāng)于concurrentConsumers屬性了。

本章中的完整源碼可從完整代碼可從https://github.com/huangbowen521/SpringJMSSample下載。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Spring ActiveMQ 整合(四): JMS 事務(wù)管理
JMS與Spring之二(用message listener container異步收發(fā)消息)
深入掌握J(rèn)MS(一):JSM基礎(chǔ)
spring jms同時使用queue和持久topic訂閱 - - Java - Java...
Spring對JMS的支持
如何配置spring與activeMQ持久性消息存儲數(shù)據(jù)庫? (Spring Framework|邏輯層) - [Matrix - 與 Java 共舞]
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服