送信元アプリケーション(Publisher)はメッセージキューミドルウェア(Broker/Queue)に対してメッセージを書き込み、連携先からのレスポンスを待つこと無く次の処理を実行。 連携先アプリケーション(Subscriber)はキュー経由でメッセージを取得し処理を進める。
- メッセージ指向
- Message Passing + Queue
- 複数オブジェクト間でのメッセージ受け渡し
- 受け取ったメッセージをQueueに格納
- 非同期・疎結合
@Configuration | |
class Config { | |
@Bean(name = "myDataSource") | |
DataSource myDataSource(DataSourceProperties dataSourceProperties, ConfigurableEnvironment environment) { | |
MutablePropertySources propertySources = environment.getPropertySources(); | |
Binder binder = new Binder(ConfigurationPropertySources.from(propertySources)); | |
HikariDataSource dataSource = dataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build(); | |
BindResult<HikariDataSource> result = binder.bind("my.spring.datasource.hikari", Bindable.ofInstance(dataSource)); | |
return result.get(); |
package com.example.demo; | |
import lombok.EqualsAndHashCode; | |
import java.util.List; | |
import java.util.function.Function; | |
import static java.util.stream.Collectors.toList; | |
@EqualsAndHashCode |
public interface MySqlDao {
default int findRows() {
return SelectBuilder.newInstance(Config.get(this))
.sql("SELECT FOUND_ROWS()")
.getScalarSingleResult(int.class);
}
default int lastInsertId() {
return SelectBuilder.newInstance(Config.get(this))
import io.grpc.Status; | |
import lombok.extern.slf4j.Slf4j; | |
import org.aspectj.lang.JoinPoint; | |
import org.aspectj.lang.annotation.AfterThrowing; | |
import org.aspectj.lang.annotation.Aspect; | |
import org.aspectj.lang.annotation.Before; | |
import org.springframework.stereotype.Component; | |
import javax.validation.ConstraintViolationException; |
import java.util.Collection; | |
import java.util.List; | |
import java.util.Map; | |
import java.util.Optional; | |
import java.util.concurrent.atomic.AtomicReference; | |
import java.util.function.BiFunction; | |
import java.util.function.Function; | |
import java.util.stream.Collector; | |
import static java.util.stream.Collectors.*; |
#Japanese messages | |
javax.validation.constraints.AssertFalse.message=Falseでなければなりません。 | |
javax.validation.constraints.AssertTrue.message=Trueでなければなりません。 | |
javax.validation.constraints.DecimalMax.message={value}以下でなければなりません。 | |
javax.validation.constraints.DecimalMin.message={value}以上でなければなりません。 | |
javax.validation.constraints.Digits.message=境界以外の数値(予測:<{integer} digits>.<{fraction} digits>) | |
javax.validation.constraints.Future.message=未来日付でなければなりません。 | |
javax.validation.constraints.Max.message={value}以下でなければなりません。 | |
javax.validation.constraints.Min.message={value}以上でなければなりません。 | |
javax.validation.constraints.NotNull.message=Nullは許可されていません。 |