kafka 支持發布訂閱

概述

一般消息隊列的是實現是支持兩種模式的,即點對點,還有一種是topic發布訂閱者模式,比如ACTIVEMQ。KAFKA也支持這兩種模式,但是實現的原理不一樣。

KAFKA 的消息被讀取后,并不是馬上刪除,這樣就可以重復讀取。kafka 正式利用這種特性實現發布訂閱者模式。

即在發布消息的時候,發布一個topic,可以使用配置多個消費者來消費,消費者使用分組來實現。比如一個topic ,有兩個分組的消費者訂閱。

那么發布一個消息的時候,兩個分組的消費者可以讀取到此條消息。

實現

配置兩組消費者。

分組1

 <bean id="consumerProperties" class="java.util.HashMap"><constructor-arg><map><!-- 配置kafka的broke --><entry key="bootstrap.servers" value="${kafka.brokerurl}"/><!-- 配置組--><entry key="group.id" value="group1"/><entry key="enable.auto.commit" value="true"/><entry key="auto.commit.interval.ms" value="1000"/><entry key="session.timeout.ms" value="30000"/><entry key="key.deserializer" value="org.apache.kafka.common.serialization.StringDeserializer"/><entry key="value.deserializer" value="com.redxun.jms.ObjectDeSerializer"/></map></constructor-arg></bean><!-- 創建consumerFactory bean --><bean id="consumerFactory" class="org.springframework.kafka.core.DefaultKafkaConsumerFactory"><constructor-arg><ref bean="consumerProperties"/></constructor-arg></bean>

注意 這個分組的ID 是 group1

分組2

<bean id="consumerProperties2" class="java.util.HashMap"><constructor-arg><map><!-- 配置kafka的broke --><entry key="bootstrap.servers" value="${kafka.brokerurl}"/><!-- 配置組--><entry key="group.id" value="group2"/><entry key="enable.auto.commit" value="true"/><entry key="auto.commit.interval.ms" value="1000"/><entry key="session.timeout.ms" value="30000"/><entry key="key.deserializer" value="org.apache.kafka.common.serialization.StringDeserializer"/><entry key="value.deserializer" value="com.redxun.jms.ObjectDeSerializer"/></map></constructor-arg></bean><!-- 創建consumerFactory bean --><bean id="consumerFactory2" class="org.springframework.kafka.core.DefaultKafkaConsumerFactory"><constructor-arg><ref bean="consumerProperties2"/></constructor-arg></bean>

這里配置的分組是2 group2 。

我們使用代碼測試發布消息:

IMessageProducer producer= MessageUtil.getProducer();LogEntity ent=new LogEntity();ent.setId("000000001");ent.setIp("192.168.1.1");ent.setAction("test");producer.send("logMessageQueue", ent);return "1";

我們在發布一個消息的時候,兩個分組的消費者都讀取到了這條消息,因此就實現了 發布訂閱者模式。

?

轉載于:https://www.cnblogs.com/yg_zhang/p/10194115.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537242.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537242.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537242.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

svn管理工具_主流代碼管理工具深度評測

引言 作為有十幾年IT行業代碼的從業人員&#xff0c;經歷過代碼管理工具的變遷&#xff0c;從早期的微軟的Source Code Control&#xff0c;到TFS&#xff0c;再到SVN&#xff0c;再到現在的Git。我深知代碼管理工具是代碼開發過程中非常重要的工具。市場上的代碼管理工具有很多…

假設條件和制約因素的理解

目錄 假設條件 制約因素 假設條件和制約因素都記錄在假設日志中。 假設條件 假設條件是指當前不能確定的、未經驗證但仍被視為正確、真實或確定的因素。 假設條件存在不確定性&#xff0c;影響項目規劃的所有方面&#xff1b;項目實施過程中假設條件一旦不成立就可能造成相…

深入理解Java的三種工廠模式

一、簡單工廠模式簡單工廠的定義&#xff1a;提供一個創建對象實例的功能&#xff0c;而無須關心其具體實現。被創建實例的類型可以是接口、抽象類&#xff0c;也可以是具體的類實現汽車接口public interface Car {String getName();}奔馳類public class Benz implements Car {…

項目管理PMBOK中的八大會議

目錄 一、項目啟動會 initiating meeting 二、項目開踢會議 kick-off meeting 三/四&#xff1a;焦點小組會議&引導式研討會 五、規劃會議與分析 六、狀態審查會 七、投標人會議 八、項目經驗總結會 一、項目啟動會 initiating meeting 1、召開時間&#xff1a;是啟…

python函數的繼承_Python 繼承

版權所有&#xff0c;未經許可&#xff0c;禁止轉載Python 繼承繼承允許我們在定義一個類時&#xff0c;讓該類繼承另一個類的所有方法和屬性。父類是被繼承的類&#xff0c;也稱為基類。子類是繼承父類的類&#xff0c;也稱為派生類。創建父類任何類都可以是父類&#xff0c;創…

MySQL 使用Node.js異步查詢結果為undefined的簡單處理辦法

//定義查詢過程,化異步為同步 function name(SQL_TXT, Respond) {ExecuteSQL(1, SQL_TXT);var i 0;var SetName setInterval(function () {if (i > 19) {clearInterval(SetName);}console.log("Tqr :第" i "次 obtain , Value : \n" Tqr " \…

python中的裝飾器怎么運行_Python 裝飾器入門(上)

翻譯前想說的話:這是一篇介紹python裝飾器的文章&#xff0c;對比之前看到的類似介紹裝飾器的文章&#xff0c;個人認為無人可出其右&#xff0c;文章由淺到深&#xff0c;由函數介紹到裝飾器的高級應用&#xff0c;每個介紹必有例子說明。文章太長&#xff0c;看完原文后我計劃…

我的2018

寫在開始 2018年以飛快的速度臨近尾聲了&#xff0c;只感慨時間過得真快&#xff01; 這一年過得算是平平淡淡&#xff0c;沒有比較特別的地方。 工作 從去年8月來到這公司&#xff0c;是個做旅游產品的互聯網公司&#xff0c;平時里做的事可以說是很簡單&#xff0c;我只能說&…

IntelliJ IDEA快捷鍵總結

搜索類快捷鍵 快捷鍵描述Ctrl F文件內查找字符串Ctrl Shift F按照文本的內容查找雙擊Shift查找任何內容&#xff0c;可搜索類、資源、配置項、方法等&#xff0c;還能搜索路徑Ctrl Shift R全局資源查找和替換Ctrl N按類名搜索類&#xff0c;比如 Java&#xff0c;Groovy…

python小波分析法檢測火焰_一種基于小波分析的網絡流量異常檢測方法

一種基于小波分析的網絡流量異常檢測方法杜臻;馬立鵬;孫國梓【期刊名稱】《計算機科學》【年(卷),期】2019(046)008【摘要】對大量網絡流量數據進行高質量特征提取與異常識別是做好網絡取證的重要基礎.文中重點研究并實現了網絡取證中的數據處理并建立了模型庫.對一種基于小波分…

初學Linux第三周

簡單shell腳本&#xff1a;#!/bin/bash 第一行必須包括shell聲明序列&#xff1a;#!##********************************************************************#Author: *****#QQ: *****#Date: 2018-12-31#FileName&#xff1a; hello.sh#URL: http#Descriptio…

python使用ddt找不到方法_python使用ddt過程中遇到的問題及解決方案【推薦】

前言&#xff1a;在使用DDT數據驅動HTMLTestRunner輸出測試報告時遇到過2個問題&#xff1a;1、生成的測試報告中&#xff0c;用例名稱后有dict() -> new empty dictionary2、使用ddt生成的用例名稱無法更改1、用例名稱后有dict() -> new empty dictionary報告中用例名稱…

合同的不含稅與稅額怎么算

假設稅率是6% 不含稅金額&#xff1d;總金額/1.06 稅額&#xff1d;不含稅金額0.06 增值稅在線計算器&#xff1a;http://www.ab126.com/goju/7332.html 大小寫轉換&#xff1a;https://link.fobshanghai.com/rmb.htm?t1525225925284 工作日計算&#xff1a;http://www.fy…

Promise進階——如何實現一個Promise庫

概述 從上次更新Promise/A規范后&#xff0c;已經很久沒有更新博客了。之前由于業務需要&#xff0c;完成了一個TypeScript語言的Promise庫。這次我們來和大家一步一步介紹下&#xff0c;我們如何實現一個符合Promise/A規范的Promise庫。 如果對Promise/A規范還不太了解的同學&…

python中isinstance(3、object)_python中isinstance函數判斷各種類型的小細節

1. 基本語法isinstance(object, classinfo)Return true if the object argument is an instance of the classinfo argument, or of a (direct, indirect or virtual)subclass thereof. Also return true if classinfo is a type object (new-style class) and object is an ob…

[前端漫談] 做一個四則計算器

0x000 概述 近期重新開始學習計算機基礎方面的東西&#xff0c;比如計算機組成原理、網絡原理、編譯原理之類的東西&#xff0c;目前正好在學習編譯原理&#xff0c;開始對這一塊的東西感興趣&#xff0c;但是理論的學習有點枯燥無味&#xff0c;決定換種方式&#xff0c;那就是…

程序員筆試面試后上機_hcie面試有哪些要注意的事項?

大家都知道&#xff0c;華為認證hcie考試分為三個部分&#xff0c;分別是筆試、lab實驗和面試。其中&#xff0c;考生討論得最多的就是面試部分&#xff0c;因為面試不同于筆試和lab實驗&#xff0c;自己埋頭答題和操作就行&#xff0c;面試要面對考官&#xff0c;考核的東西非…

【Infragistics教程】在javascript構造函數中創建基本繼承

2019獨角獸企業重金招聘Python工程師標準>>> 【下載Infragistics Ultimate最新版本】 用javascript創建對象有四種方法。具體如下&#xff1a; 對象作為文本構造函數調用模式創建&#xff08;&#xff09;方法在ES6之后使用類繼承的實現因對象創建方法而異。本文將解…

python爬蟲ssl錯誤_Python爬蟲:Requests的SSLError:certificate verify failed問題解決方案6條...

問題&#xff1a;腳本是用Python寫的&#xff0c;用到開源庫play-scraper&#xff0c;調用其collectionAPI來獲取Google Play的Top App列表。該庫使用了requests作為客戶端來對Google Play進行操作。當腳本執行時&#xff0c;會報如下錯誤&#xff1a;certificate verify faile…

2019年1月3日

數組 字面量創建數組 1. var arr[]; []里邊可以放數字&#xff0c;字符串&#xff0c;true&#xff0c;false&#xff0c;null&#xff0c;undefined&#xff0c;數組&#xff08;[1,2,3]&#xff09;&#xff0c;對象{x&#xff1a;1&#xff0c;y&#xff1a;2} var arr[1,2…