Giter VIP home page Giter VIP logo

austin's Introduction

你好 👋

😄很高兴你点开了我的主页

  • 🔭 我是一个后端工程师
  • 🔥 消息推送平台austin
  • 🔥 规则引擎hades
  • 🔥 Java知识图谱athena
  • 📫 维护了两个技术公众号:Java3y对线面试官,欢迎关注
  • 📫 可添加我的个人微信:java3yyy交流喲

austin's People

Contributors

cao-growth avatar cellur avatar clove0207 avatar da-daken avatar dqget avatar javabcde avatar jorgenzho avatar jwqsocool avatar kosmosr avatar kuangle0528 avatar kyw7 avatar leesin9527 avatar liruohrh avatar llllllllu avatar luohaojie520 avatar lyf226919 avatar mengmengdelaozhao avatar noctiszhao avatar pendj avatar pottercoding avatar qqxx6661 avatar seafeee avatar shih945 avatar tonypengjun avatar topsuder avatar vincentzee avatar whywhathow avatar wuhui2100 avatar xupt-chenxi avatar zhongfucheng3y avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

austin's Issues

Unable to acquire JDBC Connection

❓ dev环境启动项目后,一段时间不操作,再次操作时出现DB超时问题, 超时时间设置多大合适呢?

2023-01-30 17:08:58.282 [http-nio-8080-exec-3] ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - HikariPool-1 - Connection is not available, request timed out after 30014ms.
2023-01-30 17:08:58.286 [http-nio-8080-exec-3] ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - No operations allowed after connection closed.
2023-01-30 17:08:58.324 [http-nio-8080-exec-3] ERROR o.a.c.c.C.[.[localhost].[/].[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataAccessResourceFailureException: Unable to acquire JDBC Connection; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection] with root cause
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.

email.notice 分组没有消费到消息

我是本地启动项目,使用的kafka中间件,在项目启动时创建了36个消费者。如果消费一次消息,Receiver.consumer 方法是不是得执行36次。但是在这个方法里打印了一下 topicGroupId 只输出了26次。没有 email.notice 消费者分组,所以导致没有执行邮件发送操作
image
image

当消息中间件为Kafka,用户不传tagId,是否会报空指针异常?

@OverRide
public void send(String topic, String jsonValue, String tagId) { //若此时用户不传tagId
if (StrUtil.isNotBlank(tagId)) {
List

headers = Arrays.asList(new RecordHeader(tagIdKey, tagId.getBytes(StandardCharsets.UTF_8)));
kafkaTemplate.send(new ProducerRecord(topic, null, null, null, jsonValue, headers));
} else {
kafkaTemplate.send(topic, jsonValue);
}
}

@Override
public void send(String topic, String jsonValue) { //不传tagId
    send(topic, jsonValue, null);
}

@Bean
public ConcurrentKafkaListenerContainerFactory filterContainerFactory(@Value("${austin.business.tagId.key}") String tagIdKey,
                                                                      @Value("${austin.business.tagId.value}") String tagIdValue) {
    ConcurrentKafkaListenerContainerFactory factory = new ConcurrentKafkaListenerContainerFactory();
    factory.setConsumerFactory(consumerFactory);
    factory.setAckDiscarded(true);

    factory.setRecordFilterStrategy(consumerRecord -> {
        if (Optional.ofNullable(consumerRecord.value()).isPresent()) {
            for (Header header : consumerRecord.headers()) {
                if (header.key().equals(tagIdKey) && new String(header.value()).equals(new String(tagIdValue.getBytes(StandardCharsets.UTF_8)))) {  //若用户不传tagId,这行代码是否会报空指针异常?
                    return false;
                }
            }
        }
        //返回true将会被丢弃
        return true;
    });
    return factory;
}

send email error

2023-08-10 09:35:11.376 [dynamic-tp2] ERROR c.java3y.austin.handler.handler.impl.EmailHandler - EmailHandler#handler fail!cn.hutool.extra.mail.MailException: MessagingException: Exception reading response
at cn.hutool.extra.mail.Mail.send(Mail.java:393)
at cn.hutool.extra.mail.MailUtil.send(MailUtil.java:416)
at cn.hutool.extra.mail.MailUtil.send(MailUtil.java:194)
at cn.hutool.extra.mail.MailUtil.send(MailUtil.java:176)
at com.java3y.austin.handler.handler.impl.EmailHandler.handler(EmailHandler.java:61)
at com.java3y.austin.handler.handler.BaseHandler.doHandler(BaseHandler.java:61)
at com.java3y.austin.handler.pending.Task.run(Task.java:66)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
Caused by: javax.mail.MessagingException: Exception reading response;
nested exception is:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1462)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1260)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
at javax.mail.Service.connect(Service.java:297)
at javax.mail.Service.connect(Service.java:156)
at javax.mail.Service.connect(Service.java:105)
at javax.mail.Transport.send0(Transport.java:168)
at javax.mail.Transport.send(Transport.java:98)
at cn.hutool.extra.mail.Mail.doSend(Mail.java:407)
at cn.hutool.extra.mail.Mail.send(Mail.java:385)
... 9 more
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alert.createSSLException(Alert.java:131)
at sun.security.ssl.TransportContext.fatal(TransportContext.java:370)
at sun.security.ssl.TransportContext.fatal(TransportContext.java:313)
at sun.security.ssl.TransportContext.fatal(TransportContext.java:308)
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:652)
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(CertificateMessage.java:471)
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(CertificateMessage.java:367)
at sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:376)
at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:479)
at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:457)
at sun.security.ssl.TransportContext.dispatch(TransportContext.java:200)
at sun.security.ssl.SSLTransport.decode(SSLTransport.java:155)
at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1320)
at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1233)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:417)
at sun.security.ssl.SSLSocketImpl.ensureNegotiated(SSLSocketImpl.java:837)
at sun.security.ssl.SSLSocketImpl.access$200(SSLSocketImpl.java:76)
at sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:923)
at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:97)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read(BufferedInputStream.java:265)
at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:75)
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1440)
... 18 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:439)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306)
at sun.security.validator.Validator.validate(Validator.java:271)
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:312)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:221)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:128)
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:636)
... 36 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434)
... 42 more

关于 README 中的图床问题

在 Gitee 中看到相关的 Issue

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

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

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

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

邮箱正则校验会过滤掉一些合法邮箱

项目里面默认的 邮箱正则为以下

 public static final String EMAIL_REGEX_EXP = "^[A-Za-z0-9-_\\u4e00-\\u9fa5]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";

当我输入 [email protected] 时, 正则会认为是一个非法邮箱
从 ChatGPT 获取一个合法的正则如下, 作者可以更新下

public static final String EMAIL_REGEX_EXP = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";

修改配置优化接口响应

页面接口列表第一次进来耗时都是2秒多,但是同个页面连续查询,除了第一次,后面都是几毫秒。本地测试的时候通过main()启动项目,debug发现无涉及数据库操作通过校验直接返回的也是两秒多。
下面是通过几处配置的修改将接口响应优化到文档几毫秒返回(还未涉及数据库查询的)比如短信下发数据,58行直接返回。
image

  1. 升级mysql依赖版本,引入druid连接池管理
    /austin/pom.xml
    <properties>
        <druid-spring-boot-starter.version>1.1.22</druid-spring-boot-starter.version>
        <mysql-connector-java.version>8.0.20</mysql-connector-java.version>
    </properties>


    <dependencyManagement>
           <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql-connector-java.version}</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>${druid-spring-boot-starter.version}</version>
            </dependency>
    </dependencyManagement>

/austin/austin-support/pom.xml 添加

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
        </dependency>
  1. 修改项目工程配置,数据库连接添加druid相关配置
    /austin/austin-web/src/main/resources/application-dev.yml
spring:
  datasource:
    name: austin
    url: jdbc:mysql://127.0.0.1:3306/austin?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull
    username: ${austin.database.username:root}
    password: ${austin.database.password:123456}
    # 使用Druid数据源
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    druid:
      filters: stat
      maxActive: 200
      initialSize: 1
      maxWait: 60000
      minIdle: 1
      timeBetweenEvictionRunsMillis: 60000
      minEvictableIdleTimeMillis: 300000
      validationQuery: select 'x'
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      poolPreparedStatements: false
      maxOpenPreparedStatements: 2

优化前
image

看下优化后的接口响应
image

推送消息的记录是否存储在redis中?

我运行项目,推送通知后查询不到推送记录,原生代码里是否有相关存储逻辑?
我在austin-handler->pending->Task.java中发现是有跑推送任务,但是实际没有进行redis存储
image

The system has an SSRF vulnerability.

Using SSRF vulnerability to exploit file protocol to read local files.
Add an email message template.You need to fill in your own email address.
Write the attachment link as file:///etc/passwd.
1704639390_659abb9e1e74c6e3debb3
Save and Test
图片2
The email received a message and carried the passwd attachment.
image
image

🔥谁在使用 Austin?

谁在使用 Austin

非常感谢社区朋友对 Austin 的关注和支持,我会持续投入精力开发和维护,支持 Austin 走的更远。

生产环境已接入的公司开源项目,欢迎在该 Issue 登记,登记仅仅为了产品推广。

此 Issue 的目的

收集在生产上使用 Austin 的用户
聆听社区内一线开发声音,让 Austin 变得更好
吸引更多的人参与贡献,扩大社区和个人影响力
更多的了解 Austin 的实际使用场景,以方便下一步的规划

期待您能提供

您所在的城市
您所在的公司
您所在公司的官网

示例格式1:
地点:北京
组织:xxx 公司
官网:xxxxx.com

示例格式2:
开源项目地址:https://github.com/xxxxx
上线地址: xxx.com

没什么数据,列表查询耗时近10秒

image

刚本地跑通,啥数据都没有,第一次进模板列表接口转近10秒,切到渠道账号走一下列表查询,再回来模板列表,奇怪没啥数据为啥每次都能耗近10秒,难道是切页面每次数据源都能重新建立连接

你好,maven打包提示关联的jar,已经找不到了。

Failed to execute goal on project austin-data-house: Could not resolve dependencies for project com.java3y.austin:austin-data-house:jar:0.0.1-SNAPSHOT: Failed to collect dependencies at org.apache.hive:hive-exec:jar:2.3.4 -> org.apache.calcite:calcite-core:jar:1.10.0 -> org.pentaho:pentaho-aggdesigner-algorithm:jar:5.1.5-jhyde: Failed to read artifact descriptor for org.pentaho:pentaho-aggdesigner-algorithm:jar:5.1.5-jhyde: Could not transfer artifact org.pentaho:pentaho-aggdesigner-algorithm:pom:5.1.5-jhyde from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories: [datanucleus (http://www.datanucleus.org/downloads/maven2, default, releases), glassfish-repository (http://maven.glassfish.org/content/groups/glassfish, default, disabled), glassfish-repo-archive (http://maven.glassfish.org/content/groups/glassfish, default, disabled), apache.snapshots (http://repository.apache.org/snapshots, default, snapshots), central (http://repo.maven.apache.org/maven2, default, releases), conjars (http://conjars.org/repo, default, releases+snapshots)] -> [Help 1]

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

sms推送问题

现在的短信推送都是需要提前备案的,备案通过之后,有一个templateId,但是我看templateId是和配置写在一起的,加载配置的时候就加载templateId,不能选择想要发送的templateId吗?

代码结构和可读性可以,但老夫有些问题看阁下又当如何应对

  1. 占位符未被替换完成之后,是不是要拦截,不然占位符会有直接发出去的风险。
  2. 从代码功能来看,这个系统应该是push的最下面的中台,不应该有模版id的概念,也不应该有msgType的概念
  3. receiver被过滤掉后接口应该将receiver过滤原因返回,response应该是receiver维度的一个push结果

支持一下

看了一下,蛮不错的,支持一下大佬。😁

启动失败

这个SpringBoot用项目的2.5.6版本,打包文件各种缺失
image

尝试升级到2.6.2版本,打包成功,启动提示不能循环依赖,这个还得额外处理依赖的问题

如何使用项目演示地址配置邮箱渠道消息

我想利用项目的演示地址完成一次测试,具体配置如下:

渠道账号管理:

image

模板:

image

结果:

image

我猜测应该是渠道账号设置问题,小白不是很了解配置qq邮箱管理渠道账号应该如何对应qq邮箱中的设置(即使项目给了样例),希望解答!!!

Maven Install error

没有找到安装的步骤,于是按照我自己的理解,使用mvn install时会报错

[ERROR] Failed to execute goal on project austin-data-house: Could not resolve dependencies for project com.java3y.austin:austin-data-house:jar:0.0.1-SNAPSHOT: Could not find artifact org.pentaho:pentaho-aggdesigner-algorithm:jar:5.1.5-jhyde in nexus-163 (http://mirrors.163.com/maven/repository/maven-public/) -> [Help 1]

austion项目打印日志操作有问题

在本地启动了austin项目,发现一些list接口非常耗时,平常2~3秒,明明是简单的查询,没有涉及什么复杂的逻辑。排查之后,发现是log的打印操作这么耗时,个人技术能力有限,希望能够排查下,下图可以看出打印花费两秒多。
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.