😄很高兴你点开了我的主页
- 🔭 我是一个后端工程师
- 🔥 消息推送平台austin
- 🔥 规则引擎hades
- 🔥 Java知识图谱athena
- 📫 维护了两个技术公众号:Java3y和对线面试官,欢迎关注
- 📫 可添加我的个人微信:java3yyy交流喲
消息推送平台🔥 推送下发【邮件】【短信】【微信服务号】【微信小程序】【企业微信】【钉钉】等消息类型。
Home Page: http://117.50.186.19:3000/
License: Apache License 2.0
❓ 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.
炸裂了啊 ,初看这个项目挺有意思的,一看文档全是加我股东群。。。不是想吃白食,作为开源项目就基础的一些正常的各个部分的介绍该有的吧,把高深的 有技术细节的放收费里都没问题,正常的简单的各个部分的一个初步介绍的文档都没有,难受啊。
@OverRide
public void send(String topic, String jsonValue, String tagId) { //若此时用户不传tagId
if (StrUtil.isNotBlank(tagId)) {
List
@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;
}
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
在 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行直接返回。
<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>
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
主要在B站更新:https://space.bilibili.com/198434865/channel/collectiondetail?sid=435119
添加微信: java3yyy
备注申请:项目
我空时会统一拉到austin官方项目群
🔥10W+字,共97个文档,带你玩转austin,详情可戳:消息推送平台文档
第三方业务系统调用接口文档样例是什么
非常感谢社区朋友对 Austin 的关注和支持,我会持续投入精力开发和维护,支持 Austin 走的更远。
生产环境已接入的公司或开源项目,欢迎在该 Issue 登记,登记仅仅为了产品推广。
收集在生产上使用 Austin 的用户
聆听社区内一线开发声音,让 Austin 变得更好
吸引更多的人参与贡献,扩大社区和个人影响力
更多的了解 Austin 的实际使用场景,以方便下一步的规划
您所在的城市
您所在的公司
您所在公司的官网
示例格式1:
地点:北京
组织:xxx 公司
官网:xxxxx.com
示例格式2:
开源项目地址:https://github.com/xxxxx
上线地址: xxx.com
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]
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
现在的短信推送都是需要提前备案的,备案通过之后,有一个templateId,但是我看templateId是和配置写在一起的,加载配置的时候就加载templateId,不能选择想要发送的templateId吗?
当前FastJson版本存在漏洞,可升级到最新1.2.83版本
怎样配置 maven 的 settings.xml 才能方便地找到这个 artifact?
看了一下,蛮不错的,支持一下大佬。😁
没有找到安装的步骤,于是按照我自己的理解,使用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]
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.