RocketMQ學習(五):Pull和Push
原始碼版本是3.2.6。在rocketmq裡,consumer被分為2類:MQPullConsumer和MQPushConsumer,其實本質都是拉模式(pull),即consumer輪詢從broker拉取訊息。
區別是:
push方式裡,consumer把輪詢過程封裝了,並註冊MessageListener監聽器,取到訊息後,喚醒MessageListener的consumeMessage()來消費,對使用者而言,感覺訊息是被推送過來的。
pull方式裡,取訊息的過程需要使用者自己寫,首先通過打算消費的Topic拿到MessageQueue的集合,遍歷MessageQueue集合,然後針對每個MessageQueue批量取訊息,一次取完後,記錄該佇列下一次要取的開始offset,直到取完了,再換另一個MessageQueue。
文字描述可能不是很清楚,前面的文章都是push方式的,所以這裡只上pull方式的,貼程式碼:
1234567891011121314151617181920212223242526272829 | < properties > < project.build.sourceEncoding >UTF-8</ project.build.sourceEncoding > < logback.version >1.0.13</ logback.version > < rocketmq.version >3.2.6</ rocketmq.version > </ properties > < dependencies > < dependency > < groupId >ch.qos.logback</ groupId > < artifactId >logback-classic</ artifactId > < version >1.0.13</ version > </ dependency > < dependency > < groupId >ch.qos.logback</ groupId > < artifactId >logback-core</ artifactId > < version >1.0.13</ version > </ dependency > < dependency > < groupId >com.alibaba.rocketmq</ groupId > < artifactId >rocketmq-client</ artifactId > < version >${rocketmq.version}</ version > </ dependency > < dependency > < groupId >junit</ groupId > < artifactId >junit</ artifactId > < version >4.10</ version > < scope >test</ scope > </ dependency > </ dependencies > |
Producer:
1234567891011121314151617181920212223242526272829303132相關推薦RocketMQ學習(五):Pull和Push原始碼版本是3.2.6。在rocketmq裡,consumer被分為2類:MQPullConsumer和MQPushConsumer,其實本質都是拉模式(pull),即consumer輪詢從broker拉取訊息。區別是:push方式裡,consumer把輪詢過程封裝了,並註冊MessageListener監聽 python學習(五):Python類中super()和__init__()的關係1.單繼承時super()和__init__()實現的功能是類似的 class Base(object): def __init__(self): print 'Base create' class childA(Base): def __init__(sel pytorch學習筆記(五):儲存和載入模型# 儲存和載入整個模型 torch.save(model_object, 'model.pkl') model = torch.load('model.pkl') # 僅儲存和載入模型引數(推薦使 mxnet學習(五):gluon模組進行資料載入-Dataset和DataLoader在gluon介面中,通過Dataset和DataLoader來對資料集進行迴圈遍歷,並返回batch大小的資料,其中Dataset物件用於資料的收集、載入和變換,而DataLoader物件用於返回batch大小的資料。 1. 相關模組 mxnet.gluon. Servlet學習筆記(五):ServletConfig和ServletContext詳解2)獲取:SevletConfig 物件中維護了 ServletContext 物件的引用,通過 SevletConfig.getServletContext()方法獲取ServletContext 物件。或者直接呼叫封裝好的getServletContext ()方法即可獲取。 3)作用:由於一個Web hive學習教程(五):hive和Hbase整合一、Hive整合HBase原理 Hive與HBase整合的實現是利用兩者本身對外的API介面互相進行通訊,相互通訊主要是依靠hive-hbase-handler-0.9.0.jar工具類,如下圖 Hive與HBase通訊示意圖 二、具體步驟 PE檔案格式學習(五):資源表1.概述 程式內部和外部的介面等元素的二進位制資料統稱為資源,程式把它們放在一個特定的表中,符合資料和程式分離的設計原則。 Windows程式中的資源大致分為六類:選單、對話方塊、點陣圖、游標、圖示、自定義資源 資源表是資料目錄表中的第三個元素,排在匯入表的後面。 2.資 ionic學習(五):問答社群01 tabs的新建及引用1.新建專案answer01 ionic start answer01 tabs 2.啟動專案: ionic serve 3.新增4個page:discovery, chat, notification,more ionic g page 名稱 (刪除預設的about webpack學習(五):使用source mapdemo地址: https://github.com/Lkkkkkkg/webpack-demo 上次配置HtmlWebpackPlugin: https://blog.csdn.net/qq593249106/article/details/84901089 繼上次配置完HtmlWeb 設計模式學習(五):單例模式2018年08月30日 目錄 1、單例模式概念 確保某一個類只有一個例項,並且自行例項化,並且向整個系統提供這個例項。 與全域性變數的區別:全域性變數不能實現繼承,而單例模式可以; 2、餓漢模式 package designModel.Si pandas系列學習(五):資料連線作者:chen_h 微訊號 & QQ:862251340 微信公眾號:coderpai 利用 Python 處理任何實際的資料時,你就需要將 pandas DataFrame 合併或者連結在一起來分析資料集,但是這個過程還是非常花費時間的, Linux小小白入門教程(五):顯示和進入資料夾以下操作在Linux終端進行。Linux因為許可權非常嚴格,所以暫時所有的命令操作全部是在/home資料夾下的/yangjw資料夾下進行。/yangjw資料夾就是登入使用者名稱所在的資料夾,出了此資料 C語言學習(3):陣列和指標前言 上一篇部落格講了指標的用法,本章來講陣列。首先明確一點,陣列也是指標。 正文 1、陣列的幾種定義 int arr[5]; //不初始化 int arr[5] = {1,2,3,4,5}; //初始化 int arr[] = {1,2,3, GitHub學習(二):SSH和遠端倉庫這是第二次在周師兄的要求下繼續深入了一點去學github,主要他試下合作開發,這是這一次使用GitHub的一些小的總結。 總結一:關於遠端倉庫新增SSH金鑰的事情,在github賬號裡面新增金鑰就會有該本地倉庫推送至遠端倉 Struts2學習(五)———— s標籤和國際化一、s標籤 在struts-2.3.15.1/docs/WW/docs/tag-reference.html下,就有著struts2所有標籤的參考文獻,只能看看其中比較常用的標籤。其他的以後遇到了在看參考文獻即可。 通用標籤,control Tags 和 DataTags,下面用方框圈起來 Mybatis學習(五)————— 延遲載入和快取機制(一級二級快取)一、延遲載入 延遲載入就是懶載入,先去查詢主表資訊,如果用到從表的資料的話,再去查詢從表的資訊,也就是如果沒用到從表的資料的話,就不查詢從表的資訊。所以這就是突出了懶這個特點。真是懶啊。 Mybatis中resultMap可以實現延遲載入 1.1、查詢訂單資訊,延遲載入使用者資訊 多執行緒學習(三):isAlive()和sleep()和getId()isAlive() isAlive()判斷執行緒是否處於活動狀態,即執行緒已經啟動但尚未終止。 例一 public class MyThread extends Thread{ @Override public void run() { System.out.prin SVM學習(五):鬆弛變數與懲罰因子1.鬆弛變數 現在我們已經把一個本來線性不可分的文字分類問題,通過對映到高維空間而變成了線性可分的。就像下圖這樣: 圓形和方形的點各有成千上萬個(畢竟,這就是我們訓練集中文件的數量嘛,當然很大了)。現在想象我們有另一個訓練集,只比原先這個訓練集多了一篇文章,對映到高維空間 TensorFlow學習(三):Graph和Session更新時間: 2017.5.5 對一些函式或者類有了新的認識。重要的地方修改一下。 簡化了大量的東西,保留重點,只寫了常用函式的用法,其他的根據需要看文件 之前講完變數常量等等基本量的操作,意味著最基本的東西都有了,然後接下來很重要的就是那 Linux學習(五):檔案解壓縮文章目錄 檔案解壓縮 `tar` 歸檔 打包 `gzip` 壓縮檔案 `bzip2` 壓縮檔案(用法同gzip) `zip` 壓縮檔案 壓縮率 zip 檔案解壓縮 |