åæžã
Spring Integrationã¯ãç°ãªããããã³ã«ã®ã¢ããã¿ãŒ/ã¡ãã»ãŒãžãã£ãã«ïŒæ¡ä»¶ä»ããã¥ãŒïŒã«åºã¥ãçµ±åã·ã¹ãã éã®ã¢ããã¿ãŒã®äžã§ã¡ãã»ãŒãžã³ã°ã¡ã«ããºã ã䜿çšãããšã³ã¿ãŒãã©ã€ãºçµ±åãã¬ãŒã ã¯ãŒã¯ïŒEIPïŒã§ããæåãªé¡äŒŒäœã¯ããã£ã¡ã«ããã¥ãŒã«ãããã£ã§ãã
ãã¹ãã±ãŒã¹ãããåä¿¡ãããªã¯ãšã¹ããã©ã¡ãŒã¿ãèªã¿åãããšãã§ããRESTãµãŒãã¹ãäœæããããšãã°postgresãªã©ã®ããŒã¿ããŒã¹ã«ç§»åãããœãŒã¹ããåä¿¡ãããã©ã¡ãŒã¿ã«åŸã£ãŠããŒãã«ããŒã¿ãæŽæ°ããŠãã§ããããçµæããã¥ãŒã«éä¿¡ããŸãïŒãªã¯ãšã¹ã/å¿çïŒããããŠç°ãªããªã¯ãšã¹ããã¹ã§è€æ°ã®ã€ã³ã¹ã¿ã³ã¹ãäœæããŸãã
éåžžãããŒã¿ãããŒå³ã¯æ¬¡ã®ããã«ãªããŸãã
次ã«ãRESTå¶åŸ¡ã³ã³ããŒãã³ã/ã¹ã¬ãããšã³ããã€ã³ãã䜿çšããŠãIntegrationFlowContextã䜿çšããŠãã¿ã³ããªã³ã§ããŸããã³ã¹ããã«ãããç°¡åã«è¡ãæ¹æ³ã瀺ããŸãããã¹ãŠã®ã¡ã€ã³ãããžã§ã¯ãã³ãŒãã¯ãªããžããªã«é 眮ãããŸããããã§ã¯ãããã€ãã®ã¯ãªããã³ã°ã®ã¿ã瀺ããŸãããããç«ã®äžã§æ°ã«ãªã人ã¯ã©ããã
ããŒã«
ããã©ã«ãã®äŸåé¢ä¿ãããã¯ããå§ããŸããããåºæ¬çã«ããããŒãšã³ã³ããŒãã³ãã®ç®¡çã®RESTã€ããªãã®ãŒãã¹ããªã³ã°çµ±åã®ããã«ããã£ãã«ãšã¢ããã¿ã«åºã¥ããŠã±ãŒã¹ãäœæããããã«ãã¹ããªã³ã°ããŒããããžã§ã¯ããå¿ èŠã§ãã
ãããŠãç§ãã¡ã¯ããã«ã±ãŒã¹ãåçŸããããã«ä»ã«äœãå¿ èŠãèããŸããã³ã¢ã®äŸåé¢ä¿ã«å ããŠããµããããžã§ã¯ã-Integration-httpãintegration-jdbcãintegration-groovyïŒGoovyã¹ã¯ãªããã«åºã¥ããŠåçã«ã«ã¹ã¿ãã€ãºå¯èœãªããŒã¿ã³ã³ããŒã¿ãŒãæäŸïŒãå¿ èŠã§ãããããšã¯å¥ã«ããã®äŸã§ã¯äžèŠãªgroovyã³ã³ããŒã¿ãŒã¯äœ¿çšããªããšèšããŸãããå€éšããã«ã¹ã¿ãã€ãºããæ©èœãæäŸããŸãã
äŸåé¢ä¿ãªã¹ã
<!-- Spring block -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-integration</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-groovy</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-http</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-jdbc</artifactId>
</dependency>
<!-- Db block -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<!-- Utility block -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.12</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>
å éšãããã³
å¿ èŠãªã·ã¹ãã ã³ã³ããŒãã³ãïŒã©ãããŒ/ã¢ãã«ïŒã®äœæã«ç§»ããŸãããããã£ãã«ãBeanãhttpInboundGatewayããã³ãã©ãŒãjdbcOutboundGatewayãããã³çµæã¢ãã«ãå¿ èŠã§ãã
- Bean-ã¢ããã¿ãã¹ã¬ããã«å¿ èŠãªãã«ããŒãªããžã§ã¯ã
- channel-ã¹ããªãŒã ã³ã³ããŒãã³ããšã®éã§ã¡ãã»ãŒãžãé ä¿¡ããããã®ãã£ãã«
- httpInboundGateway-ããã«åŠçããããã®ããŒã¿ãå«ããªã¯ãšã¹ããããã«éä¿¡ããhttpã¢ã¯ã»ã¹ãã€ã³ã
- ãã³ãã©ãŒ-ãã³ãã©ãŒã®äžè¬çãªã¿ã€ãïŒã°ã«ãŒããã©ã³ã¹ãã©ãŒããŒãããŸããŸãªã¢ããã¿ãŒãªã©ïŒ
- jdbcOutboundGateway-JDBCã¢ããã¿ãŒ
- result-ç¹å®ã®ãã£ãã«ã«æ å ±ãéä¿¡ããããã®ãã³ãã©ãŒ
ãã©ã¡ãŒã¿ãæ ŒçŽããã¹ããªãŒã å šäœã®ã³ã³ããŒãã³ããæ£ããåæåããã©ãããŒãå¿ èŠãªã®ã§ãã³ã³ããŒãã³ãã¹ãã¢ãããã«äœæããŠè¿œå ããŸãã JSONã³ã³ããŒã¿ãŒã®æ©èœ->å®çŸ©ã¢ãã«ãç§ã®å Žåããžã£ã¯ãœã³ãšãªããžã§ã¯ãã䜿çšãããã£ãŒã«ãã®çŽæ¥ãããã³ã°ã¯é©çšã§ããŸããã§ãã-ç¹å®ã®éä¿¡ãããã³ã«çšã«ãã1å°èªè»¢è»ããããŸããã¢ãããŒã·ã§ã³ã䜿çšã ãŠ
ãããã«ããŸããããŸãããïŒStreamComponent-ã¯ã©ã¹ãã¹ããªãŒã ã³ã³ããŒãã³ãã®ãã¥ãŒãã³ã°ã¢ãã«ãšããŠèå¥ãã責任ãããããµãŒãã¹æ å ±ïŒã³ã³ããŒãã³ãã®ååãã³ã³ããŒãã³ãã®ã¿ã€ããã³ã³ããŒãã³ãããã¹ããããŠãããã©ããã説æïŒããããŸãã SettingClass-ã¹ãŒããŒã¯ã©ã¹ãã£ãŒã«ãã®ã¹ãã£ã³ãå€ã®åæåæã®ãã£ãŒã«ãã®ç¡èŠãªã©ãã¢ãã«ãã¹ãã£ã³ããããã®è¿œå ãªãã·ã§ã³ãæ åœããŸãã
SettingValue-ã¯ã©ã¹ãã£ãŒã«ããå€éšããã«ã¹ã¿ãã€ãºå¯èœãªãã®ãšããŠèå¥ããJSONã®ååä»ãèšå®ã説æãã¿ã€ãã³ã³ããŒã¿ãŒãæ å ±ãã£ãŒã«ãã®å¿ é ãã£ãŒã«ããã©ã°ãšå éšãªããžã§ã¯ããã©ã°ã§èå¥ããŸããRESTã³ã³ãããŒã©ãŒã®ã¢ãã«ãæäœããããã®
ã³ã³ããŒãã³ãã¹ãã¬ãŒãžãããŒãžã£ãŒ
ãã«ããŒã¡ãœãã
åºæ¬ã¢ãã«-äžé£ã®è£å©ãã£ãŒã«ã/ã¢ãã«ã¡ãœããã«ããæœè±¡å
çŸåšã®ãããŒæ§æã¢ãã«
ããããŒJSON->å®çŸ©ã¢ãã«
äœæ¥ã®ã¡ã€ã³ã°ã©ãŠã³ããæºåãããŸããã次ã«ãã¹ããªãŒã ã®ã©ã€ããµã€ã¯ã«ãã¹ãã¬ãŒãžãããã³åæåãæ åœãããµãŒãã¹ã®å®è£ ã«çŽæ¥åãæãããŸããåãååã®1ã€ã®ã¹ããªãŒã ãè€æ°ã®ã€ã³ã¹ã¿ã³ã¹ã«äžŠååã§ãããšããèããããã«èª¬æããŸããã€ãŸãããããŒã®ãã¹ãŠã®ã³ã³ããŒãã³ãã«äžæã®èå¥åïŒGUIDïŒãäœæããå¿ èŠããããŸããããããªããšãã¢ããªã±ãŒã·ã§ã³ã³ã³ããã¹ãã§ä»ã®ã·ã³ã°ã«ãã³ã³ã³ããŒãã³ãïŒBeanããã£ãã«ãªã©ïŒãšã®è¡çªãçºçããå¯èœæ§ããããŸãããã ããæåã«2ã€ã®ã³ã³ããŒãã³ãïŒhttpãšjdbcïŒã®ããããŒãäœæããŸããããã¹ããªãŒã èªäœã®ã³ã³ããŒãã³ãïŒHttpRequestHandlerEndpointSpecããã³JdbcOutboundGatewayïŒã«å¯ŸããŠä»¥åã«äœæãããã¢ãã«ã®å¢åã
HttpRegistry
JdbcRegistry
äžå€®ç®¡çãµãŒãã¹ïŒStreamDeployingServiceïŒã¯ãŒã«ãŒ/éã¢ã¯ãã£ããä¿åããæ©èœãå®è¡ããæ°ããã¯ãŒã«ãŒãç»é²ããã¢ããªã±ãŒã·ã§ã³ã³ã³ããã¹ãããã¹ã¬ãããå®å šã«éå§ãåæ¢ãåé€ããŸãããµãŒãã¹ã®éèŠãªæ©èœã¯IntegrationFlowBuilderRegistryäŸåé¢ä¿ã®å®è£ ã§ããããã¯ãã¢ããªã±ãŒã·ã§ã³ã®ãã€ããã¯ã¹ãäœæããã®ã«åœ¹ç«ã¡ãŸãïŒããããããããã®æ§æxmlãã¡ã€ã«ãŸãã¯ããã¡ãŒãã«ã®DSLã¯ã©ã¹ãèŠããŠãããŠãã ããïŒãã¹ããªãŒã ã®ä»æ§ã«ãããšãããã¯åžžã«ã€ã³ããŠã³ãã³ã³ããŒãã³ããŸãã¯ãã£ãã«ããéå§ããå¿ èŠããããããregisterStreamContextã¡ãœããã®å®è£ ã§ãããèæ ®ããŸãã
ãããŠè£å©ãããŒãžã£ãŒïŒIntegrationFlowBuilderRegistryïŒãããã¯ããããŒã³ã³ããŒãã³ããžã®ã¢ãã«ã®ããããŒãšIntegrationFlowBuilderã䜿çšãããããŒèªäœã®åæåã®äž¡æ¹ã®æ©èœãå®è¡ããŸãããŸãããããŒãã€ãã©ã€ã³ã«ãã°ãã³ãã©ãŒããããŒãã£ãã«ã¡ããªãã¯ãåéããããã®ãµãŒãã¹ïŒåãæ¿ãå¯èœãªãªãã·ã§ã³ïŒãããã³Groovyå®è£ ã«åºã¥ããããŒã¡ãã»ãŒãžã³ã³ããŒã¿ãŒã®å¯èœãªå®è£ ãå®è£ ããŸããïŒçªç¶ãã®äŸã販売ã®åºç€ã«ãªã£ãå ŽåããããŒã®åæåã®æ®µéã§groovyã¹ã¯ãªããã®ããªã³ã³ãã€ã«ãè¡ãå¿ èŠããããŸãïŒ ãRAMã§è² è·ãã¹ããå®è¡ãããšãã³ã¢ã®æ°ãšé»åã«é¢ä¿ãªãïŒãã¢ãã«ã®ãã°ã¹ããŒãžãšãã°ã¬ãã«ã®ãã©ã¡ãŒã¿ãŒã®æ§æã«å¿ããŠãã³ã³ããŒãã³ãããã³ã³ããŒãã³ããžã®ã¡ãã»ãŒãžã®åéä¿¡åŸã«ã¢ã¯ãã£ãã«ãªããŸããã¢ãã¿ãªã³ã°ã¯application.ymlã®ãã©ã¡ãŒã¿ãŒã«ãã£ãŠæå¹åããã³ç¡å¹åãããŸãïŒ
monitoring:
injectction:
default: true
ããã§ãåçããŒã¿åŠçãããŒãåæåããããã®ãã¹ãŠã®ã¡ã«ããºã ãæã£ãã®ã§ãRabbitMQãKafkaãTcpãFtpãªã©ã®ããŸããŸãªãããã³ã«ããã³ã¢ããã¿ãŒçšã®ããããŒãè¿œå ã§äœæã§ããŸããããã«ãã»ãšãã©ã®å Žåãèªåã®æã§äœããæžãå¿ èŠã¯ãããŸããïŒãã¡ãããæ§æã¢ãã«ãšè£å©ã¡ãœãããé€ãïŒ-ããªãå€æ°ã®ã³ã³ããŒãã³ãããªããžããªã«ãã§ã«ååšããŠããŸãã
æçµæ®µéã¯ãæ¢åã®ã·ã¹ãã ã³ã³ããŒãã³ãã«é¢ããæ å ±ã®ååŸããããŒã®ç®¡çãããã³ã¡ããªãã¯ã®ååŸã®ããã®ã³ã³ãããŒã©ãŒã®å®è£ ã§ãã
ComponentsController-人éãèªããã¢ãã«ã®ãã¹ãŠã®ã³ã³ããŒãã³ãã«é¢ããæ å ±ãšãååãšã¿ã€ãããšã«1ã€ã®ã³ã³ããŒãã³ããæäŸããŸãã
StreamController -å®å šãªãããŒç®¡çãã€ãŸãæ°ããJSONã¢ãã«ã®åæåãèå¥åã«ããã¡ããªãã¯ã®éå§ãåæ¢ãåé€ãçºè¡ãæäŸããŸãã
æçµè£œå
çµæã®ã¢ããªã±ãŒã·ã§ã³ãçæãããã¹ãã±ãŒã¹ãJSON圢åŒã§èšè¿°ããŸãã
ãµã³ãã«ããŒã¿ã¹ããªãŒã
ããŒã¿ããŒã¹åæåã¹ã¯ãªããïŒ
: order â , .. , . ( ). â .
CREATE TABLE IF NOT EXISTS account_data
(
id INT NOT NULL,
accountname VARCHAR(45) NOT NULL,
password VARCHAR(128),
email VARCHAR(255),
last_ip VARCHAR(15) DEFAULT NULL NOT NULL
);
CREATE UNIQUE INDEX account_data_username_uindex
ON account_data (accountname);
ALTER TABLE account_data
ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
SEQUENCE NAME account_data_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1
);
ALTER TABLE account_data
ADD CONSTRAINT account_data_pk
PRIMARY KEY (id);
CREATE TABLE IF NOT EXISTS account_info
(
id INT NOT NULL,
banned BOOLEAN DEFAULT FALSE,
premium_points INT DEFAULT 0,
premium_type SMALLINT DEFAULT -1
);
ALTER TABLE account_info
ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
SEQUENCE NAME account_info_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1
);
ALTER TABLE account_info
ADD CONSTRAINT account_info_account_data_id_fk FOREIGN KEY (id) REFERENCES account_data (id)
ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE account_info
ADD CONSTRAINT account_info_pk
PRIMARY KEY (id);
INSERT INTO account_data (accountname, password, email, last_ip)
VALUES ('test', 'test', 'test@test', '127.0.0.1');
INSERT INTO account_info (banned, premium_points, premium_type)
VALUES (false, 1000, 1);
: order â , .. , . ( ). â .
{
"flowName": "Rest Postgres stream",
"components": [
{
"componentName": "bean",
"componentType": "other",
"componentParameters": {
"id": "pgDataSource",
"bean-type": "com.zaxxer.hikari.HikariDataSource",
"property-args": [
{
"property-name": "username",
"property-value": "postgres"
},
{
"property-name": "password",
"property-value": "postgres"
},
{
"property-name": "jdbcUrl",
"property-value": "jdbc:postgresql://localhost:5432/test"
},
{
"property-name": "driverClassName",
"property-value": "org.postgresql.Driver"
}
]
}
},
{
"componentName": "message-channel",
"componentType": "source",
"componentParameters": {
"id": "jdbcReqChannel",
"order": 1,
"channel-type": "direct",
"max-subscribers": 1000
}
},
{
"componentName": "message-channel",
"componentType": "source",
"componentParameters": {
"id": "jdbcRepChannel",
"order": 1,
"channel-type": "direct"
}
},
{
"componentName": "http-inbound-gateway",
"componentType": "source",
"componentParameters": {
"order": 2,
"http-inbound-supported-methods": [
"POST"
],
"payload-type": "org.genfork.integration.model.request.http.SimpleJdbcPayload",
"log-stages": true,
"log-level": "INFO",
"request-channel": "jdbcReqChannel",
"reply-channel": "jdbcRepChannel"
}
},
{
"componentName": "handler",
"componentType": "processor",
"componentParameters": {
"order": 3,
"handler-definition": {
"componentName": "jdbc-outbound-adapter",
"componentType": "app",
"componentParameters": {
"data-source": "pgDataSource",
"query": "SELECT accountname, password, email, last_ip, banned, premium_points, premium_type FROM account_data d INNER JOIN account_info i ON d.id = i.id WHERE d.id = :payload.accountId",
"update-query": "UPDATE account_info SET banned = true WHERE id = :payload.accountId",
"jdbc-reply-channel": "jdbcRepChannel",
"log-stages": true,
"log-level": "INFO"
}
}
}
},
{
"componentName": "result",
"componentType": "app",
"componentParameters": {
"order": 4,
"cancel": false,
"result-channel": "jdbcRepChannel"
}
}
]
}
ãã¹ãïŒ
1ïŒ
POST / stream / deploy ã¡ãœããã䜿çšããŠæ°ããã¹ããªãŒã ãåæåããŸããããã§ãJSONã¯ãªã¯ãšã¹ãã®æ¬æã«å«ãŸããŸãã
å¿çãšããŠããã¹ãŠãæ£ããå Žåãã·ã¹ãã ã¯éä¿¡ããå¿ èŠããããŸããããã§ãªãå Žåããšã©ãŒã¡ãã»ãŒãžã衚瀺ãããŸãã
{
"status": "SUCCESS", -
"streamId": "2bf65d9d-97c6-4199-86aa-0c808c25071b" -
}
2ïŒæ¬¡ã®ã¡ãœããã䜿çšããŠéå§ãéå§ã
ãŸãïŒGET / stream / 2bf65d9d-97c6-4199-86aa-0c808c25071b / startãããã§ãåæåãããã¹ããªãŒã ã®èå¥åãå ã«ç€ºããŸãã
å¿çãšããŠããã¹ãŠãæ£ããå Žåãã·ã¹ãã ã¯éä¿¡ããå¿ èŠããããŸããããã§ãªãå Žåããšã©ãŒã¡ãã»ãŒãžã衚瀺ãããŸãã
{
"status": "SUCCESS", -
}
3ïŒã·ã¹ãã å ã®èå¥åã§ã¹ããªãŒã ãåŒã³åºããŠããŸããïŒã©ã®ããã«ãäœããã©ãã§-HttpRegistryã¢ãã«ã®ããããŒã§ãæ¡ä»¶ãèšè¿°ããŸãã
Http.inboundGateway(localPath != null ? localPath : String.format("/stream/%s/call", uuid))
ããã§ãhttp-inbound-pathãã©ã¡ãŒã¿ãŒãèæ ®ãããã³ã³ããŒãã³ãã®æ§æã§æ瀺çã«æå®ãããŠããªãå Žåã¯ç¡èŠãããã·ã¹ãã ã³ãŒã«ãã¹ãèšå®ãããŸããç§ãã¡ã®å Žåãããã¯æ¬¡ã®ããã«ãªããŸãïŒ
POST / stream / ece4d4ac-3b46-4952-b0a6-8cf334074b99 / call-ã¹ããªãŒã ã®èå¥åãååšãããªã¯ãšã¹ãã®æ¬æãããã«ãããŸãïŒ
{
"accountId": 1
}
ããã«å¿ããŠããªã¯ãšã¹ãã®åŠç段éãæ£ããæ©èœããŠããã°ãaccount_dataããŒãã«ãšaccount_infoããŒãã«ã®ã¬ã³ãŒãã®ãã©ããæ§é ãåãåããŸãã
{
"accountname": "test",
"password": "test",
"email": "test@test",
"last_ip": "127.0.0.1",
"banned": true,
"premium_points": 1000,
"premium_type": 1
}
JdbcOutboundGatewayã¢ããã¿ãŒã®ç¹æ§ã¯ãupdate-queryãã©ã¡ãŒã¿ãŒãæå®ããå Žåãè¿œå ã®ãã³ãã©ãŒãç»é²ãããæåã«ããŒã¿ãæŽæ°ããŠãããqueryãã©ã¡ãŒã¿ãŒã«ãã£ãŠã®ã¿ãã§ãããããšãããã®ã§ãã
åããã¹ãæåã§æå®ãããšãããã€ãã®ã€ã³ã¹ã¿ã³ã¹ã§ã¹ããªãŒã ãžã®ã¢ã¯ã»ã¹ãã€ã³ããšããŠHttpInboundGatewayã䜿çšããŠã³ã³ããŒãã³ããèµ·åããå¯èœæ§ããªããªããŸããããã¯ãã·ã¹ãã ãåæ§ã®ãã¹ãç»é²ã§ããªãããã§ãã
4ïŒGETã¡ãœãã/ã¹ããªãŒã / 2bf65d9d-97c6-4199-86aa-0c808c25071b /ã¡ããªãã¯ã䜿çšããŠã¡ããªãã¯ãèŠãŠã¿ãŸããã
å¿çå
容
, / , / / :
[
{
"streamId": "2bf65d9d-97c6-4199-86aa-0c808c25071b",
"channelName": "application.Rest Postgres stream_2bf65d9d-97c6-4199-86aa-0c808c25071b_jdbcReqChannel",
"sendDuration": {
"count": 1,
"min": 153.414,
"max": 153.414,
"mean": 153.414,
"standardDeviation": 0.0,
"countLong": 1
},
"maxSendDuration": 153.414,
"minSendDuration": 153.414,
"meanSendDuration": 153.414,
"meanSendRate": 0.001195117818082359,
"sendCount": 1,
"sendErrorCount": 0,
"errorRate": {
"count": 0,
"min": 0.0,
"max": 0.0,
"mean": 0.0,
"standardDeviation": 0.0,
"countLong": 0
},
"meanErrorRate": 0.0,
"meanErrorRatio": 1.1102230246251565E-16
},
{
"streamId": "2bf65d9d-97c6-4199-86aa-0c808c25071b",
"channelName": "application.2bf65d9d-97c6-4199-86aa-0c808c25071b.channel#2",
"sendDuration": {
"count": 1,
"min": 0.1431,
"max": 0.1431,
"mean": 0.1431,
"standardDeviation": 0.0,
"countLong": 1
},
"maxSendDuration": 0.1431,
"minSendDuration": 0.1431,
"meanSendDuration": 0.1431,
"meanSendRate": 0.005382436008121413,
"sendCount": 1,
"sendErrorCount": 0,
"errorRate": {
"count": 0,
"min": 0.0,
"max": 0.0,
"mean": 0.0,
"standardDeviation": 0.0,
"countLong": 0
},
"meanErrorRate": 0.0,
"meanErrorRatio": 0.0
},
{
"streamId": "2bf65d9d-97c6-4199-86aa-0c808c25071b",
"channelName": "application.Rest Postgres stream_2bf65d9d-97c6-4199-86aa-0c808c25071b_jdbcRepChannel",
"sendDuration": {
"count": 1,
"min": 0.0668,
"max": 0.0668,
"mean": 0.0668,
"standardDeviation": 0.0,
"countLong": 1
},
"maxSendDuration": 0.0668,
"minSendDuration": 0.0668,
"meanSendDuration": 0.0668,
"meanSendRate": 0.001195118373693797,
"sendCount": 1,
"sendErrorCount": 0,
"errorRate": {
"count": 0,
"min": 0.0,
"max": 0.0,
"mean": 0.0,
"standardDeviation": 0.0,
"countLong": 0
},
"meanErrorRate": 0.0,
"meanErrorRatio": 1.1102230246251565E-16
}
]
çµè«
ãããã£ãŠãä»ã®ã·ã¹ãã ãšã®çµ±åã®ããã«ã¢ããªã±ãŒã·ã§ã³ã§æ¯åè¿œå ã®æåãã³ãã©ãŒïŒãã€ãã©ã€ã³ïŒãäœæããããããããŸããŸãªã·ã¹ãã ãšçµ±åããããã®ã¢ããªã±ãŒã·ã§ã³ãäœæããã®ã«å°ãæéãšåŽåãè²»ãããŠãã³ãŒãããããã200ã500è¡äœæããæ¹æ³ã瀺ãããŸããã
çŸåšã®äŸã§ã¯ãã¹ã¬ããã®äŸåé¢ä¿ïŒãã³ããã£ãã«ãªã©ïŒéã®ã¢ããªã±ãŒã·ã§ã³ã®ã°ããŒãã«ã³ã³ããã¹ãã§ã®è¡çªãåé¿ããäžæã®èå¥åã䜿çšããŠãè€æ°ã®ã€ã³ã¹ã¿ã³ã¹ã®åãã¿ã€ãã®ã¹ã¬ããã®äœæ¥ã䞊ååã§ããŸãã
ããã«ããããžã§ã¯ããéçºã§ããŸãã
- ã¹ããªãŒã ãããŒã¿ããŒã¹ã«ä¿åããŸãã
- Springããã³Springçµ±åã³ãã¥ããã£ãæäŸãããã¹ãŠã®çµ±åã³ã³ããŒãã³ãããµããŒãããŸãã
- ã¹ã±ãžã¥ãŒã«ã«åŸã£ãŠã¹ã¬ããã䜿çšããŠäœæ¥ããã¯ãŒã«ãŒãäœæããŸãã
- æ¡ä»¶ä»ãã®ãããŠã¹ãšã³ã³ããŒãã³ããã¥ãŒããã§ã¹ããªãŒã ãæ§æããããã®é©åãªUIãäœæããŸãïŒã¡ãªã¿ã«ããã®äŸã¯github.com/spring-cloud/spring-cloud-dataflow-uiãããžã§ã¯ãçšã«éšåçã«ã·ã£ãŒãã«ãããŸããïŒã
ãããŠããäžåºŠããªããžããªãžã®ãªã³ã¯ãè€è£œããŸãã