当前位置: 首页 > 编程日记 > 正文

active mq topic消费后删除_Spring cloud stream 整合mq

说明:本案例win10环境

测试scs(spring cloud stream)整合kfk(kafka)/rbt(rabbitmq)消息生产消费场景

流程

一、准备中间件环境(kfk/rbt)

后续内容提供kfk与rbt的环境准备流程

二、导入scs的依赖

项目spring boot 版本:2.1.3.RELEASE

引入spring cloud 版本:Greenwich.SR3 支持 spring boot 2.1.x.RELEASE

SR3:Service Release

0dec25568a132b3734d295668547b4b1.png

POM相关依赖

<properties>


三、编写配置文件

spring

四、组织测试代码

五、启动实例测试

启动服务顺序

  1. zookeeper服务
  2. kafka服务
  3. kafka生产者服务
  4. kafka消费者服务
  5. rabbitmq服务
  6. 启动boot项目

kfk组件原理

Ⅰ. CONCEPT OF KFK

Broder:kfk实例.
Producer:msg生产者.
Consumer:msg消费者.
Topic:msg主题,用于消息路由策略.
Partition:topic分区,如设置值为3,体现形式为3个文件夹.
Consumer group:消费者组,设置消费组后可以实现msg不重复消费.
Replication:分区的副本,follower和leader在不同机器上,设计与es雷同,如下图Topic C.Ⅱ. DESIGN OF KFK

892d02033a9eea6d8b16f1f27e824587.png

94116048e8d679a641d87ae22fc51537.png

46b282faa8c998539cfb2e98bc103ac8.png

84b53e5488f31580f3818c475a2ca681.png

rbt组件原理

Ⅰ. CONCEPT OF RBT
Message:由消息头和消息体组成.
Publisher:msg生产者.
Consumer:msg消费者.
Exchange:交换器,用来接收生产者发送的消息并将这些消息路由给服务器中的队列.
Routing Key:路由关键字,exchange根据这个关键字进行消息投递。
Binding:绑定器,用于关联交换器与消息队列.
Queue:消息队列容器.
Connection:socket连接.
Channel:信道,使用多路复用技术-双向数据流通道 (通信连接复用).
Virtual Host:mini 版的 rbt服务器,拥有独立的队列、交换器、绑定和权限机制,vh是 AMQP 概念的基础.
Broker:mq服务器实体,它的角色作用是维护消息流水线,保证数据能按照指定的方式进行传输.Ⅱ. DESIGN OF RBT

a2f90826f7ce9256bb552cc3fc7390a8.png

b96e361283268ec4f0618c8d4741307f.png


【概念统一】
destination(scs)=topic(kfk)=exchange(rbt)


kfk 环境

一、文件配置 (可选项)
1. zookeeper
A. 配置文件<zoo_sample.cfg>克隆一份名称为<zoo.cfg>
B. 数据目录:# dataDir=D:swzookeeper-3.4.14data
2. kafka
A. 配置日志目录:# log.dirs=kafka-logs

二、应用启动 (安装目录下)
1. zookeeper
$.binzkServer.cmd
2. kafka
$.binwindowskafka-server-start.bat .configserver.properties

三、创建主题
$.binwindowskafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 2 --topic example

四、查看主题
$.binwindowskafka-topics.bat --list --zookeeper localhost:2181

五、启动生产者
$.binwindowskafka-console-producer.bat --broker-list localhost:9092 --topic example

六、启动消费者
$.binwindowskafka-console-consumer.bat --bootstrap-server localhost:9092 --topic example --from-beginning

七、改变分区数
$.binwindowskafka-topics.bat --zookeeper localhost:2181 --alter --partitions 2 --topic example-kfk3

八、参数说明
--topic 主题名称,scs中概念为 destination
--partitions 指定分区个数,scs中概念为 partition-count
--replication-factor 指定副本因子
--create 创建主题
--alter 改动操作

九、问题日志
(1)kafka与zookeeper版本需要兼容
(2)配置文件中路径的分隔符注意转义
(3)java应用启动如不需要连接数据库加
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)(4)多个监听实例重复消费mq问题需求:一份msg,多个实例监听,只能被一个实例消费,并且为轮流消费策略解决方案:生产者设置分区数量n,并在cfg中设置消费者分组,则可被n个实例轮流不重复消费


rbt 环境

一、下载
下载rbt及依赖的erlang,并配置环境变量

二、添加插件
MQ可视化管理插件:rabbitmq-plugins enable rabbitmq_management

三、访问环境http://localhost:15672/

四、操作步骤
1. 创建exchange
2. 设置推送策略
3. 绑定queue
4. 发送消息

相关文章:

翻译的艺术 —— 无能为力的翻译,搞笑的音译

0. 无能为力的翻译 至尊宝&#xff1a;best sonny&#xff0c;乌龙&#xff1a;own goal&#xff0c;的粤语发音&#xff1b;1. 取其发音 word ⇒ 我的&#xff0c;word 妈呀&#xff0c; Need just word,word has word&#xff0c;你的就是我的&#xff0c;我的还是我的&#…

经常可能会用到的【函数节流和函数防抖】记录下,做下区分

今天突然被人问到&#xff0c;函数节流和函数防抖的区别是什么&#xff0c;结果我脑子一热直接举了个滚动条的粟子说是优化高频率执行的手段&#xff0c;就记得自己是用setTimeout来实现的。完了区别是什么&#xff1f;&#xff1f;哪个是哪个都蒙B了回家想想&#xff0c;有些东…

智能合约和区块链技术:入门指南

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 智能合约和区块链技术&#xff1a;入门指南 多年前&#xff0c;在没有数字合约和区块链技术存在的情况下&#xff0c;双方的合约往往以传统的方式进…

2. 尾部的零

题目 设计一个算法&#xff0c;计算出n阶乘中尾部零的个数 样例 11! 39916800&#xff0c;因此应该返回 2 题解 一开始就用最简单对1-n找出5的个数&#xff0c;然后超时了。虽然都直到是要找5&#xff0c;因为2肯定比5多&#xff0c;所以5的个数就是0的个数&#xff0c;只是计…

case when then else end

1、根据数据库表中特定的值进行排序显示 select * from tablename where order by case when columname then 1 wnen columname when 2 else 3 end 2、根据数据库中存的值根据情况对其进行赋值CASE sexWHEN 1 THEN 男WHEN 2 THEN 女 ELSE 其他 END --Ca…

python replace函数_Python3 replace()函数使用方法

描述 replace() 方法把字符串中的 old&#xff08;旧字符串&#xff09; 替换成 new(新字符串)&#xff0c;如果指定第三个参数max&#xff0c;则替换不超过 max 次。 语法replace()方法语法&#xff1a; str.replace(old, new[, max]) 参数 old -- 将被替换的子字符串。 new -…

EOS技术知识介绍

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 EOS 简介 EOS&#xff1a;EOS可以理解为Enterprise Operation System&#xff0c;即为商用分布式应用设计的一款区块链操作系统。EOS是EOS软件引入…

团体程序设计天梯赛-练习集-L1-044. 稳赢

L1-044. 稳赢 大家应该都会玩“锤子剪刀布”的游戏&#xff1a;两人同时给出手势&#xff0c;胜负规则如图所示&#xff1a; 现要求你编写一个稳赢不输的程序&#xff0c;根据对方的出招&#xff0c;给出对应的赢招。但是&#xff01;为了不让对方输得太惨&#xff0c;你需要每…

currenttimemillis 毫秒还是秒_Elasticsearch(ES)如何做到亿级数据查询毫秒级返回

前言&#xff1a;这个问题其实是更面向原理及实操方面的内容。换个问法&#xff0c;可以是这样来问&#xff1a;ES 在数据量很大的情况下(数十亿级别)如何提高查询效率&#xff1f;为了精简&#xff0c;如下内容将Elasticsearch简称为ES如果你仅仅是用过ES&#xff0c;对于这个…

分布式系统的时间顺序

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 分布式系统的时间顺序 区块链被认为是分布式的系统&#xff0c;分布式系统中由于多节点&#xff0c;通讯、物理位置等的问题&#xff0c;各节点间时…

JVM 老年代对象来源

一般情况是四种&#xff0c;但是尤其以第一种来源最多1.新生代对象每经历依次minor gc&#xff0c;年龄会加一&#xff0c;当达到年龄阀值会直接进入老年代。阀值大小一般为152.Survivor空间中年龄所有对象大小的总和大于survivor空间的一半&#xff0c;年龄大于或等于该年龄的…

[心跳] 使用心跳机制实现CS架构下多客户端的在线状态实时更新以及掉线自动重连...

此文讲述的内容是一个实际项目开发中的一部分内容&#xff0c;笔者将亲身经历写成文章。 【背景】 现 需要实现这样的功能&#xff1a;有多个客户端连着同一个服务器。服务器和客户端之间需要“互相”知道彼此的连接状态。比如在某一时刻&#xff0c;服务器需要知道当前有多少个…

python绝对值编程_Python-abs vs fabs

编辑&#xff1a;正如aix所建议的&#xff0c;比较速度差异的更好&#xff08;更公平&#xff09;方法是&#xff1a;In [1]: %timeit abs(5) 10000000 loops, best of 3: 86.5 ns per loop In [2]: from math import fabs In [3]: %timeit fabs(5) 10000000 loops, best of 3:…

如何搭建以太坊私有链

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 如何搭建以太坊私有链1 今天讲一下如何搭建以太坊私有连&#xff0c;当然了在你阅读这篇文章的时候&#xff0c;最好是有一定基础&#xff0c;比如…

Autocomplete 自动补全(Webform实战篇)

开篇语 因为项目中需要用到一个自动补全的功能&#xff0c;功能描述&#xff1a; 需求一&#xff1a;新增收件人的时候&#xff0c;自动下拉显示出数据库中所有的收件人信息&#xff08;显示的信息包括&#xff1a;姓名-收件地址-联系方式&#xff09; 需求二&#xff1a;选中一…

前端开发基础7(Bootstrap框架)

Bootstrap介绍 Bootstrap是Twitter开源的基于HTML、CSS、JavaScript的前端框架。 它是为实现快速开发Web应用程序而设计的一套前端工具包。 它支持响应式布局&#xff0c;并且在V3版本之后坚持移动设备优先。 为什么要使用Bootstrap&#xff1f; 在Bootstrap出现之前&#xff1…

python自动化测试难不难_Python测试自动化好学还是Pythonweb开发好学?

还是测试吧。。。 用动态语言搞开发&#xff0c;项目大了根本没法维护&#xff0c;而且还会bug层出不穷&#xff0c;任谁也Hold不住。真想搞开发&#xff0c;要么玩Java&#xff0c;要么玩C#。 下面举个例子。 比如一个游戏项目&#xff0c;是这样的(伪代码)&#xff1a;角色 l…

以太坊智能合约开发第二篇:理解以太坊相关概念

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 很多人都说比特币是区块链1.0&#xff0c;以太坊是区块链2.0。在以太坊平台上&#xff0c;可以开发各种各样的去中心化应用&#xff0c;这些应用构成…

【python之旅】python的基础二

一、集合的操作 1、什么是集合&#xff1f; 集合是一个无序的&#xff0c;不重复的数据组合&#xff0c;它的主要作用如下&#xff1a; 去重&#xff1a;把一个列表变成集合&#xff0c;就自动去重关系测试&#xff1a;测试两组数据之前的交集&#xff0c;差集&#xff0c;并集…

hash 值重复_程序员:判断对象是否重复,不重写equals和hashcode不行吗?

前言大家都知道如果要判断一个对象是否相同&#xff0c;都要在对象实体中重写equals和hashcode方法&#xff0c;那你知道为什么重写这两个方法就能根据自己定义的规则实现相等比较了吗&#xff1f;今天带大家来了解一下equals和hashcode重写的实现。set是如何去重的&#xff1f…

LazyT 延迟加载

namespace ConsoleAppTest {class Program{static void Main(string[] args){Lazy<Student> student new Lazy<Student>();//默认未初始化Console.WriteLine(student);//在第一次使用时才实例化Console.WriteLine(student.Value);Console.ReadLine();}public clas…

如何编写一个可升级的智能合约

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 如何编写一个可升级的智能合约 区块链信任基础的数据不可修改的特性&#xff0c;让它传统应用程序有一个很大的不同的地方是一经发布于区块链上就…

用ILSpy查看Session.SessionID的生成算法

缘由 asp.net Session在InProc模式下&#xff0c;容易丢失&#xff0c;经常需要重新登录&#xff0c;且不支持分布式共享。   所以在研究Redis实现原生的Session,本来想用GUID作为key存入cookie&#xff0c;又在想能不能实现跟Session一样的id 实现 ILSpy 是一个开源的.NET反…

java 中 bean 的生命周期

java 中 bean 的生命周期 本篇中会对涉及到的知识点皆做出描述&#xff1a; 首先&#xff0c;我们先了解先虚拟机的类加载机制&#xff1a; 虚拟机把描述类的数据从Class 文件中加载到内存&#xff0c;并对数据进行校验、转换解析和初始化&#xff0c;最终形成可以被虚拟机直接…

python简易版实例_Python3之简单搭建自带服务器的实例讲解

WEB开发&#xff0c;我们先从搭建一个简单的服务器开始&#xff0c;Python自带服务模块&#xff0c;且python3相比于python2有很大不同&#xff0c; 在Python2.6版本里&#xff0c;/usr/bin/lib/python2.6/ 目录下会有 BaseHTTPServer.py, SimpleHTTPServer.py, CGIHTTPServer.…

如何选择分布式系统(区块链)协议?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 如何选择分布式系统&#xff08;区块链&#xff09;协议? 在构建包分布式系统功能的应用程序时&#xff0c;《财富》500强企业和创始人经常问我们…

MySQL与IO

数据库作为存储系统&#xff0c;所有业务访问数据的操作都会转化为底层数据库系统的IO行为(缓存系统也可以当做是key-value的数据库),本文主要介绍访问mysql数据库的IO流程以及IO相关的参数。 一 MySQL 的文件 首先简单介绍一下MySQL的数据文件&#xff0c;MySQL 数据库包含如下…

python括号配对问题_使用Python的栈实现括号匹配算法

写一个栈的类&#xff1a;stack.py class Stack: def __init__(self): self.items [] def is_Empty(self): return self.items [] def push(self, item): self.items.append(item) def pop(self): return self.items.pop() def peek(self): return self.items[len(items)-1] …

万航单位换算器 V1.0 绿色版

软件名称&#xff1a; 万航单位换算器软件语言&#xff1a; 简体中文授权方式&#xff1a; 免费软件运行环境&#xff1a; Win 32位/64位软件大小&#xff1a; 347KB图片预览&#xff1a; 软件简介:万航单位换算器是一个可以随意转换单位的绿色软件&#xff0c;这个软件收集了各…

Golang学习-基础命令

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 、 Golang学习-基础命令 一、go run 用于运行命令源码文件&#xff0c;只能接收一个命令源码文件以及若干个库源码文件作为参数。先将源码文件编译…