消息推送平台 - 所使用的技术栈包括:SpringBoot、SpringDataJPA、MySQL、Docker、docker-compose、Kafka、Redis、Apollo、prometheus、Grafana、GrayLog等等

Related tags

Spring Boot austin
Overview

作者 gitee Starts gitee Starts 作者 996.icu 对线面试官

项目介绍

austin项目核心功能:发送消息

项目出现意义:只要公司内有发送消息的需求,都应该要有类似austin的项目,对各类消息进行统一发送处理。这有利于对功能的收拢,以及提高业务需求开发的效率

系统项目架构

austin项目核心流程austin-api接收到发送消息请求,直接将请求进MQaustin-handler消费MQ消息后由各类消息的Handler进行发送处理

Question :为什么发个消息需要MQ?

Answer:发送消息实际上是调用各个服务提供的API,假设某消息的服务超时,austin-api如果是直接调用服务,那存在超时风险,拖垮整个接口性能。MQ在这是为了做异步和解耦,并且在一定程度上抗住业务流量。

Question:能简单说下接入层做了什么事吗?

Answer

Questionaustin-streamaustin-datahouse的作用?

Answeraustin-handler在发送消息的过程中会做些通用业务处理以及发送消息,这个过程会产生大量的日志数据。日志数据会被收集至MQ,由austin-stream流式处理模块进行消费并最后将数据写入至austin-datahouse

Questionaustin-adminaustin-cron的作用?

Answerautsin-adminaustin项目的管理后台,负责管理消息以及查看消息下发的情况。业务方可根据通过austin-admin管理后台直接定时发送消息,而austin-cron就是承载着定时任务的工作了。

使用姿势

目前引用的中间件教程的安装姿势均基于Centos 7.6,austin项目强依赖MySQL/Redis/Kafka/apollo弱依赖prometheus/graylog。如果缺少相关的组件可戳:安装相关组件教程

1、austin使用的MySQL版本5.7x。如果目前使用的MySQL版本8.0,注意改变pom.xml所依赖的版本

2、适配application.yml的配置信息(srping.datasource)

3、执行sql文件夹下的austin.sql创建对应的表

4、填写Kafka配置的bootstrap-servers地址和端口以及对应的topicName

5、填写Redis的hostportpassword

6、填写apollo的appid/namespace

7、以上配置信息都在application.yml文件中修改。

8、由于使用了Apollo且我是在云服务器上安装的,我这边会直接跳过metaserver服务发现,在AustinApplication需要配置对应的apollo地址

9、目前短信和邮件账号的信息都配置在apollo,配置的示例参照com.java3y.austin.utils.AccountUtils#getAccount中的注释

10、调用http接口com.java3y.austin.controller.SendController#send给自己发一条短信或者邮件感受

curl -XPOST "127.0.0.1:8080/send"  -H 'Content-Type: application/json'  -d '{"code":"send","messageParam":{"receiver":"13788888888","variables":{"title":"yyyyyy","contentValue":"6666164180"}},"messageTemplateId":1}'

11、austin前端管理系统部署(一分钟即能打开),戳GitHubGitee查看

里程碑

第四季度:三个月已完成的内容

短时间内规划:

  • 01、搭建消息推送Web后台管理页面,进一步降低接入和使用门槛
  • 02、引入分布式定时任务框架,实现定时推送消息,提高运营侧下发营销消息的效率。
  • 03、接入流式处理平台实时处理日志数据,多维度聚合后产生全链路追踪数据供业务方自行排查问题,减少排查问题的人效
  • 04、持续提高消息推送系统的影响力,让更多的业务方了解其功能,进而挖掘更多拉新和唤醒用户的玩法,提高站内的次留率和转化率

近期更新时间:2022年1月25日

近期更新功能:austin前端管理系统

项目交流

可以添加我的个人微信备注:【项目】,我会空闲的时候拉进项目交流群

Java3y公众号在持续更新austin系列文章,保姆级讲解搭建项目的过程(包括技术选型以及一些业务的探讨)以及相关环境的搭建。扫下面的码直接关注,带你了解整个项目

如果你需要用这个项目写在简历上,强烈建议关注公众号看实现细节的思路。如果⽂档中有任何的不懂的问题,都可以直接来找我询问,我乐意帮助你们!公众号下有我的联系方式

如何准备面试?

对线面试官公众号持续更新面试系列文章(对线面试官系列),深受各大开发的好评,已有不少的同学通过对线面试官系列得到BATTMD等一线大厂的的offer。一个讲人话的面试系列,八股文不再是背诵。

You might also like...

hibernate redis 二级缓存使用 spring boot redis 配置

hibernate-redisson-spring-boot-starter 介绍 使用 Redisson 作为 hibernate redis 二级缓存提供器,redisson-hibernate-53(hibernate-version) 无法使用 spring boot 配置文件创建的 org

Jul 3, 2022

:racehorse:基于SpringBoot + MySQL + Redis + RabbitMQ + Guava开发的高并发商品限时秒杀系统

:racehorse:基于SpringBoot + MySQL + Redis + RabbitMQ + Guava开发的高并发商品限时秒杀系统

系统介绍 本系统是使用SpringBoot开发的高并发限时抢购秒杀系统,除了实现基本的登录、查看商品列表、秒杀、下单等功能,项目中还针对高并发情况实现了系统缓存、降级和限流。 开发工具 IntelliJ IDEA + Navicat + Sublime Text3 + Git + Chrome 压测

Dec 5, 2022

mall4cloud微服务商城,基于Spring Cloud、Nacos、Seata、Mysql、Redis、RocketMQ、canal、ElasticSearch、minio的B2B2C微服务商城系统,采用主流的互联网技术架构、全新的UI设计 B2B2C微服务商城|小程序微服务商城|

mall4cloud微服务商城,基于Spring Cloud、Nacos、Seata、Mysql、Redis、RocketMQ、canal、ElasticSearch、minio的B2B2C微服务商城系统,采用主流的互联网技术架构、全新的UI设计 B2B2C微服务商城|小程序微服务商城|

README 前言 本商城是基于Spring Cloud、Nacos、Seata、Mysql、Redis、RocketMQ、canal、ElasticSearch、minio的微服务B2B2C电商商城系统,采用主流的互联网技术架构、全新的UI设计、支持集群部署、服务注册和发现以及拥有完整的订单流程等

Dec 2, 2022

SpringBoot SpringSecurity Jpa mybatis-plus websocket Redis camunda Vue3 Vite ant-design VbenAdmin vxe-table bpmn.js

SpringBoot SpringSecurity Jpa mybatis-plus websocket Redis camunda Vue3 Vite ant-design VbenAdmin vxe-table bpmn.js

Nov 24, 2022

Simple springboot API for addressBook. Supports all REST controllers and have custom error handling for every specific case, also supports redis caching.

Simple springboot API for addressBook. Supports all REST controllers and have custom error handling for every specific case, also supports redis caching.

AddressBook-SpringBoot-API Simple Springboot API for addressBook with redis cache. Supports all REST controllers and have custom error handling for ev

Jan 21, 2022

8INF138-TP3-SECURITY-DOCKER - Le docker du tp3 du cours 8INF138 de l'UQAC

📚 TP3 - 8INF138 Ceci est le TP3 du module 8INF138 de l'Universite du Quebec a Chicoutimi Le rapport ce situe dans le depot Le travail visuel n'a pas

May 30, 2022

:herb: 基于springboot的快速学习示例,整合自己遇到的开源框架,如:rabbitmq(延迟队列)、Kafka、jpa、redies、oauth2、swagger、jsp、docker、spring-batch、异常处理、日志输出、多模块开发、多环境打包、缓存cache、爬虫、jwt、GraphQL、dubbo、zookeeper和Async等等:pushpin:

:herb: 基于springboot的快速学习示例,整合自己遇到的开源框架,如:rabbitmq(延迟队列)、Kafka、jpa、redies、oauth2、swagger、jsp、docker、spring-batch、异常处理、日志输出、多模块开发、多环境打包、缓存cache、爬虫、jwt、GraphQL、dubbo、zookeeper和Async等等:pushpin:

欢迎大家留言和PR~ Tip: 技术更新换代太快,本仓库仅做参考,自己的项目具体使用哪个版本还需谨慎思考~(不推荐使用最新的版本,推荐使用(最新-1|2)的版本,会比较稳定) spring-boot-quick 前言   自己很早就想搞一个总的仓库就是将自己平时遇到的和学习到的东西整合在一起,方便后

Nov 28, 2022

End to End project for Kafka Streams using Spring Cloud Kafka streams

End to End project for Kafka Streams using Spring Cloud Kafka streams

Spring Kafka Streams using Spring Cloud Streams End to End example Endpoint http://localhost:8080/domain/lookup/facebook - to pull all facebook relate

Nov 8, 2022

Kafka-spring-boot-starter: encapsulated based on spring-kafka

Kafka-spring-boot-starter: encapsulated based on spring-kafka

Encapsulation based on spring-kafka not only supports native configuration, but also adds multi data source configuration.

Nov 29, 2022
Comments
  • ReceiverStart java.lang.IndexOutOfBoundsException

    ReceiverStart java.lang.IndexOutOfBoundsException

    Caused by: java.lang.IndexOutOfBoundsException: Index: 33, Size: 33 at java.util.ArrayList.rangeCheck(ArrayList.java:659) at java.util.ArrayList.get(ArrayList.java:435) at com.java3y.austin.handler.receiver.kafka.ReceiverStart.lambda$groupIdEnhancer$0(ReceiverStart.java:77) at org.springframework.kafka.annotation.KafkaListenerAnnotationBeanPostProcessor.lambda$buildEnhancer$1(KafkaListenerAnnotationBeanPostProcessor.java:321) at org.springframework.kafka.annotation.KafkaListenerAnnotationBeanPostProcessor.enhance(KafkaListenerAnnotationBeanPostProcessor.java:418) at org.springframework.kafka.annotation.KafkaListenerAnnotationBeanPostProcessor.findListenerAnnotations(KafkaListenerAnnotationBeanPostProcessor.java:400) at org.springframework.kafka.annotation.KafkaListenerAnnotationBeanPostProcessor.lambda$postProcessAfterInitialization$2(KafkaListenerAnnotationBeanPostProcessor.java:343) at org.springframework.core.MethodIntrospector.lambda$selectMethods$0(MethodIntrospector.java:74) at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:364) at org.springframework.core.MethodIntrospector.selectMethods(MethodIntrospector.java:72) at org.springframework.kafka.annotation.KafkaListenerAnnotationBeanPostProcessor.postProcessAfterInitialization(KafkaListenerAnnotationBeanPostProcessor.java:341) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:455) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1808) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ... 23 common frames omitted

    opened by ruixiong-kong 2
  • 关于 README 中的图床问题

    关于 README 中的图床问题

    在 Gitee 中看到相关的 Issue

    有点好奇,为什么不将图片放在仓库中,然后在 README 中引用?

    另外,有点好奇这个项目,Gitee 和 Github 两边维护,如何进行同步?

    是在 git 的 config 中配置两个 remote 地址,push 两次吗

    那这样的话,对于 PR,岂不是也要人工同步?

    opened by Dup4 1
  • 【新人必看】

    【新人必看】

    【如何提pull request】

    pull request 基于master最新的内容提交

    【项目视频】

    主要在B站更新:https://space.bilibili.com/198434865/channel/collectiondetail?sid=435119

    【项目笔记】

    关注公众号Java3y,有项目从零搭建的整个过程的笔记,在公众号下回复「austin」即可领取

    【项目交流群】

    添加微信:sanwai3y 备注申请:项目 我会统一拉到austin项目群

    good first issue 
    opened by ZhongFuCheng3y 0
Owner
Java3y
我想做话事人,你能来支持我吗?
Java3y
🦄 开源社区系统:基于 SpringBoot + MyBatis + MySQL + Redis + Kafka + Elasticsearch + Spring Security + ... 并提供详细的开发文档和配套教程。包含帖子、评论、私信、系统通知、点赞、关注、搜索、用户设置、数据统计等模块。

Echo — 开源社区系统 项目上线到服务器之后可能会出现各种各样的 BUG,比如 Elasticsearch 服务启动失败导致搜索模块不可用,但是在本地运行是完全没问题的,所以各位小伙伴可以放心下载部署。 ?? 项目简介 Echo 是一套前后端不分离的开源社区系统,基于目前主流 Java Web

小牛肉 423 Dec 3, 2022
A high availability shopping(ecommerce) system using SpringBoot, Spring Cloud, Eureka Server, Spring Cloud Gateway, resillience4j, Kafka, Redis and MySQL.

High-availability-shopping-system A high availability shopping(ecommerce) system using SpringBoot, Spring Cloud, Eureka Server, Spring Cloud Gateway,

LeiH 1 Oct 26, 2022
Deploying Spring Boot and MongoDB as Containers Using Docker and Docker Compose

springboot-mongodb-docker Deploying Spring Boot and MongoDB as Containers Using Docker and Docker Compose Steps & Commands pull mongo image from docke

Java Techie 9 Nov 25, 2022
Spring prometheus grafana

spring-prometheus-grafana For correct operation it is necessary to make some steps: 1- Run the command docker-compose up -d --build in the terminal: 2

Thalles Vieira 2 Jan 25, 2022
Beispielprojekt für Monitoring mit Prometheus und Grafana

Beispielprojekt für Monitoring mit Prometheus und Grafana Software git Für die Java Beispiel Java JDK in Version 17. Docker und docker-compose empfohl

trion 1 Jan 27, 2022
backend for a sharing app using SpringBoot, Redis, MySQL, and AWS S3.

moments_v2_backend (Work In Progress) backend for a sharing app using SpringBoot, Redis, MySQL, and AWS S3. This is the second version of my project S

Haiming Sun 54 Oct 28, 2022
lilishop是采用JAVA开发的B2B2C多用户商城系统/电商系统/电子商务。基于当前流行技术组合的前后端分离商城系统:后端使用 SpringBoot、MybatisPlus、SpringSecurity、redis、ES、mysql、mongodb等主流技术,前端使用vue框架iview、uniapp。支持分布式部署,分布式事务,支持docker、k8s。商城支持 PC、WAP、H5、小程序、APP等各个客户端

Lilishop B2B2C商城系统 官方公众号 & 开源不易,如有帮助请点Star 介绍 官网:https://pickmall.cn Lilishop 是一款Java开发,基于SpringBoot研发的B2B2C多用户商城,前端使用 Vue、uniapp开发 系统全端全部代码开源 产品前后端分离

null 2.8k Dec 8, 2022
A personal blog based on Vue+SpringBoot+MySql+Redis+Shiro+JWT

项目:Vue-SpringBoot-PersonalBlog 个人博客网址:http://www.huchao.vip/blogs CSDN:毛_三月 介绍 一个基于SpringBoot + Vue+MybatisPlus+Shiro+JWT+Redis开发的前后端分离博客项目,带有超级详细开发文档

Chao. Hu 25 Sep 10, 2022
Docker-compose-integration-tstst - An exploration of how to run integration tests against an application that has inconvenient external dependencies (e.g. a SQL database).

Tstst? it was supposed to be docker-compose-integration-tests but i was too lazy to fix it at the outset, and now im trying to convince myself its fun

null 1 Jan 4, 2022
Apollo is a reliable configuration management system suitable for microservice configuration management scenarios.

English | 中文 Apollo - A reliable configuration management system Apollo is a reliable configuration management system. It can centrally manage the con

Apollo 27.6k Dec 5, 2022