1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      rocketmq中MessageQueueSelector的作用是什么

      今天就跟大家聊聊有關(guān)rocketmq中MessageQueueSelector的作用是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

      創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計制作、網(wǎng)站制作和成都IDC機房托管的網(wǎng)絡(luò)公司,有著豐富的建站經(jīng)驗和案例。

      MessageQueueSelector

      rocketmq-client-4.5.2-sources.jar!/org/apache/rocketmq/client/producer/MessageQueueSelector.java

      public interface MessageQueueSelector {
          MessageQueue select(final List mqs, final Message msg, final Object arg);
      }
      • MessageQueueSelector接口定義了select方法,返回MessageQueue;它有幾個實現(xiàn)類,分別是SelectMessageQueueByHash、SelectMessageQueueByRandom、SelectMessageQueueByMachineRoom

      SelectMessageQueueByHash

      rocketmq-client-4.5.2-sources.jar!/org/apache/rocketmq/client/producer/selector/SelectMessageQueueByHash.java

      public class SelectMessageQueueByHash implements MessageQueueSelector {
      
          @Override
          public MessageQueue select(List mqs, Message msg, Object arg) {
              int value = arg.hashCode();
              if (value < 0) {
                  value = Math.abs(value);
              }
      
              value = value % mqs.size();
              return mqs.get(value);
          }
      }
      • SelectMessageQueueByHash實現(xiàn)了MessageQueueSelector接口,其select方法取arg參數(shù)的hashcode的絕對值,然后對mqs.size()取余,得到目標隊列在mqs的下標

      SelectMessageQueueByRandom

      rocketmq-client-4.5.2-sources.jar!/org/apache/rocketmq/client/producer/selector/SelectMessageQueueByRandom.java

      public class SelectMessageQueueByRandom implements MessageQueueSelector {
          private Random random = new Random(System.currentTimeMillis());
      
          @Override
          public MessageQueue select(List mqs, Message msg, Object arg) {
              int value = random.nextInt(mqs.size());
              return mqs.get(value);
          }
      }
      • SelectMessageQueueByRandom實現(xiàn)了MessageQueueSelector接口,其select方法直接根據(jù)mqs.size()隨機一個值作為目標隊列在mqs的下標

      SelectMessageQueueByMachineRoom

      rocketmq-client-4.5.2-sources.jar!/org/apache/rocketmq/client/producer/selector/SelectMessageQueueByMachineRoom.java

      public class SelectMessageQueueByMachineRoom implements MessageQueueSelector {
          private Set consumeridcs;
      
          @Override
          public MessageQueue select(List mqs, Message msg, Object arg) {
              return null;
          }
      
          public Set getConsumeridcs() {
              return consumeridcs;
          }
      
          public void setConsumeridcs(Set consumeridcs) {
              this.consumeridcs = consumeridcs;
          }
      }
      • SelectMessageQueueByMachineRoom實現(xiàn)了MessageQueueSelector接口,其select方法目前返回null

      RocketMQTemplate

      rocketmq-spring-boot-2.0.3-sources.jar!/org/apache/rocketmq/spring/core/RocketMQTemplate.java

      public class RocketMQTemplate extends AbstractMessageSendingTemplate implements InitializingBean, DisposableBean {
          private static final  Logger log = LoggerFactory.getLogger(RocketMQTemplate.class);
      
          private DefaultMQProducer producer;
      
          private ObjectMapper objectMapper;
      
          private String charset = "UTF-8";
      
          private MessageQueueSelector messageQueueSelector = new SelectMessageQueueByHash();
      
          private final Map cache = new ConcurrentHashMap<>(); //only put TransactionMQProducer by now!!!
      
          public DefaultMQProducer getProducer() {
              return producer;
          }
      
          public void setProducer(DefaultMQProducer producer) {
              this.producer = producer;
          }
      
          public ObjectMapper getObjectMapper() {
              return objectMapper;
          }
      
          public void setObjectMapper(ObjectMapper objectMapper) {
              this.objectMapper = objectMapper;
          }
      
          public String getCharset() {
              return charset;
          }
      
          public void setCharset(String charset) {
              this.charset = charset;
          }
      
          public MessageQueueSelector getMessageQueueSelector() {
              return messageQueueSelector;
          }
      
          public void setMessageQueueSelector(MessageQueueSelector messageQueueSelector) {
              this.messageQueueSelector = messageQueueSelector;
          }
      
          //......
      }
      • RocketMQTemplate默認創(chuàng)建的MessageQueueSelector是SelectMessageQueueByHash

      看完上述內(nèi)容,你們對rocketmq中MessageQueueSelector的作用是什么有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


      當前文章:rocketmq中MessageQueueSelector的作用是什么
      本文路徑:http://ef60e0e.cn/article/giogig.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        同德县| 仁怀市| 双峰县| 芷江| 福贡县| 都兰县| 庄浪县| 无棣县| 胶南市| 楚雄市| 凯里市| 石渠县| 桐梓县| 将乐县| 梁平县| 佛坪县| 锡林浩特市| 舞钢市| 西昌市| 通山县| 晴隆县| 甘孜| 筠连县| 高邮市| 武宁县| 平陆县| 马鞍山市| 黔西县| 永济市| 南皮县| 长治市| 白玉县| 衡南县| 凤城市| 象州县| 临西县| 右玉县| 临高县| 雅江县| 宝丰县| 武山县|