add request response

This commit is contained in:
kimscott
2020-02-06 15:03:26 +09:00
parent a2ae16fec3
commit c8ae3a67f4
6 changed files with 71 additions and 5 deletions

22
pom.xml
View File

@@ -2,6 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId> <artifactId>spring-boot-starter-parent</artifactId>
@@ -26,6 +27,7 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId> <artifactId>spring-boot-starter-data-rest</artifactId>
@@ -85,6 +87,26 @@
</dependencies> </dependencies>
<!-- <repositories>-->
<!-- <repository>-->
<!-- <id>eventstorming</id>-->
<!-- <url>https://pkgs.dev.azure.com/eventstorming/_packaging/eventstorming/maven/v1</url>-->
<!-- <releases>-->
<!-- <enabled>true</enabled>-->
<!-- </releases>-->
<!-- <snapshots>-->
<!-- <enabled>true</enabled>-->
<!-- </snapshots>-->
<!-- </repository>-->
<!-- </repositories>-->
<!-- <distributionManagement>-->
<!-- <repository>-->
<!-- <id>eventstorming</id>-->
<!-- <url>https://pkgs.dev.azure.com/eventstorming/_packaging/eventstorming/maven/v1</url>-->
<!-- </repository>-->
<!-- </distributionManagement>-->
<dependencyManagement> <dependencyManagement>
<dependencies> <dependencies>
<dependency> <dependency>

10
settings_maven.xml Normal file
View File

@@ -0,0 +1,10 @@
<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
<servers>
<server>
<id>eventstorming</id>
<username>eventstorming</username>
<password>k6hx3hjbjnxw2g6avk2j4skr6md2ruanva7ryjfraqaqn2bwcvsq</password>
</server>
</servers>
</settings>

View File

@@ -55,7 +55,10 @@ public class AbstractEvent {
return json; return json;
} }
public void sendMessage(String json){ public void publish(){
this.publish(this.toJson());
}
public void publish(String json){
if( json != null ){ if( json != null ){
/** /**

View File

@@ -32,7 +32,7 @@ public class Product {
@PostPersist @PostUpdate @PostPersist @PostUpdate
private void publishStart() { private void publishStart() {
ProductChanged productChanged = new ProductChanged(this); ProductChanged productChanged = new ProductChanged(this);
productChanged.sendMessage(productChanged.toJson()); productChanged.publish();
} }
public Long getId() { public Long getId() {

View File

@@ -14,9 +14,7 @@ public class ProductChanged extends AbstractEvent{
private String imageUrl; private String imageUrl;
public ProductChanged(){ public ProductChanged(){
this.setEventType(this.getClass().getSimpleName()); super();
SimpleDateFormat defaultSimpleDateFormat = new SimpleDateFormat("YYYYMMddHHmmss");
this.timestamp = defaultSimpleDateFormat.format(new Date());
} }
public ProductChanged(Product product){ public ProductChanged(Product product){

View File

@@ -1,14 +1,31 @@
package com.example.template; package com.example.template;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@RestController @RestController
public class ProductController { public class ProductController {
private static final String RESPONSE_STRING_FORMAT = "product change from '%s': %d";
private final Logger logger = LoggerFactory.getLogger(getClass());
@Autowired @Autowired
ProductService productService; ProductService productService;
private int count = 0;
private static final String HOSTNAME = parseContainerIdFromHostname(
System.getenv().getOrDefault("HOSTNAME", "deliveries"));
static String parseContainerIdFromHostname(String hostname) {
return hostname.replaceAll("deliveries-v\\d+-", "");
}
@GetMapping("/product/{productId}") @GetMapping("/product/{productId}")
Product productStockCheck(@PathVariable(value = "productId") Long productId) { Product productStockCheck(@PathVariable(value = "productId") Long productId) {
@@ -27,4 +44,20 @@ public class ProductController {
System.out.println(data); System.out.println(data);
return this.productService.save(data); return this.productService.save(data);
} }
@PatchMapping("/product/{productId}")
ResponseEntity<String> fakeProductPatch(@PathVariable(value = "productId") Long productId, @RequestBody String data) {
count++;
logger.info(String.format("product start from %s: %d", HOSTNAME, count));
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
return ResponseEntity.ok(String.format(RESPONSE_STRING_FORMAT, HOSTNAME, count));
}
} }