如果不想只是用 JdbcTemplate,又是同時要連多個資料庫,就用 Spring Data JPA。
Spring Data JDBC 雖然講得很厲害,還提到 Domain Driven Design,但不支援多資料庫:https://stackoverflow.com/questions/49914310/how-to-configure-multiple-datasources-in-spring-data-jdbc
如果不想只是用 JdbcTemplate,又是同時要連多個資料庫,就用 Spring Data JPA。
Spring Data JDBC 雖然講得很厲害,還提到 Domain Driven Design,但不支援多資料庫:https://stackoverflow.com/questions/49914310/how-to-configure-multiple-datasources-in-spring-data-jdbc
build.gradle 加這些:
plugins { id 'maven-publish' } publishing { publications { mavenJava(MavenPublication) { from components.java } } } jar { into("META-INF/maven/$project.group/$project.name") { from { generatePomFileForMavenJavaPublication } rename ".*", "pom.xml" } }
components.java 不是指 .java 檔,不用改它
然後跑 gradle publishToMavenLocal(我現在是只先做到產生 Jar 再自己上傳到 packagecloud)
其他細節參考 https://docs.gradle.org/current/userguide/publishing_maven.html
@Configuration public class AppConfig { private static final String SESSION_NAME = "sample"; @Value("${proxy.host:#{null}}") private String proxyHost; @Value("${proxy.port:0}") private int proxyPort; @Value("${cloud.aws.region.static}") private String region; @Bean @Primary public AWSCredentialsProvider awsCredentialsProvider( @Value("${cloud.aws.credentials.accessKey}") String accessKey, @Value("${cloud.aws.credentials.secretKey}") String secretKey, @Value("${cloud.aws.role}") String role) { AWSSecurityTokenService stsClient = AWSSecurityTokenServiceClientBuilder.standard() .withRegion(region) .withClientConfiguration(clientConfiguration()) .withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secretKey))) .build(); return new STSAssumeRoleSessionCredentialsProvider .Builder(role, SESSION_NAME) .withStsClient(stsClient) .build(); } @Bean public QueueMessageHandlerFactory queueMessageHandlerFactory() { QueueMessageHandlerFactory factory = new QueueMessageHandlerFactory(); MappingJackson2MessageConverter messageConverter = new MappingJackson2MessageConverter(); messageConverter.setStrictContentTypeMatch(false); factory.setArgumentResolvers(Collections.singletonList(new PayloadArgumentResolver(messageConverter))); return factory; } @Bean(name = "amazonSQS") public AmazonSQSAsync amazonSQSAsyncClient(AWSCredentialsProvider awsCredentialsProvider) { return AmazonSQSAsyncClientBuilder.standard() .withRegion(region) .withCredentials(awsCredentialsProvider) .withClientConfiguration(clientConfiguration()) .build(); } @Bean ClientConfiguration clientConfiguration() { ClientConfiguration clientConfiguration = new ClientConfiguration(); if (!StringUtils.isEmpty(proxyHost)) { clientConfiguration.setProxyHost(proxyHost); clientConfiguration.setProxyPort(proxyPort); } return clientConfiguration; } }
先看圖
簡直慘不忍睹,問了微軟,他們建議是用 App Service 方案開啟 Always On
看 App Service 方案定價,似乎就等於租了一個虛擬機
感覺和 AWS Lambda 落差滿大,AWS Lambda 可是真的按使用計價,而且沒有這樣的 overhead
另外 Azure Functions 的 C# 表現,看起來也不如 AWS Lambda 穩定
Ionic2 from Jiayun Zhou
My presentation in JCConf Taiwan 2015
看看這頁倒數第二欄 Variables 那項,開頭完全不通
後來查到這個
才知道還有人報過 bug,但 Sun 不知道在搞什麼,文件完全不更新