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.mzph.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…