1. 程式人生 > >RocketMQ學習(五):Pull和Push

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學習PullPush

原始碼版本是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模組進行資料載入-DatasetDataLoader

在gluon介面中,通過Dataset和DataLoader來對資料集進行迴圈遍歷,並返回batch大小的資料,其中Dataset物件用於資料的收集、載入和變換,而DataLoader物件用於返回batch大小的資料。 1. 相關模組 mxnet.gluon.

Servlet學習筆記ServletConfigServletContext詳解

2)獲取:SevletConfig 物件中維護了 ServletContext 物件的引用,通過 SevletConfig.getServletContext()方法獲取ServletContext 物件。或者直接呼叫封裝好的getServletContext ()方法即可獲取。  3)作用:由於一個Web

hive學習教程hiveHbase整合

一、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 map

demo地址: 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學習GraphSession

更新時間: 2017.5.5 對一些函式或者類有了新的認識。重要的地方修改一下。 簡化了大量的東西,保留重點,只寫了常用函式的用法,其他的根據需要看文件 之前講完變數常量等等基本量的操作,意味著最基本的東西都有了,然後接下來很重要的就是那

Linux學習檔案解壓縮

文章目錄 檔案解壓縮 `tar` 歸檔 打包 `gzip` 壓縮檔案 `bzip2` 壓縮檔案(用法同gzip) `zip` 壓縮檔案 壓縮率 zip 檔案解壓縮