Skip to content

BDD-CLUB/bulk-mailing-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

73 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

OverView

Spring-Batch-Bulk-Mailing-Service๋Š” Spring Batch ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“  ๋Œ€๋Ÿ‰ ๋ฉ”์ผ ์ „์†ก ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

๋งŽ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ผ๊ด„์ ์œผ๋กœ ๋™์ผํ•œ ๋‚ด์šฉ์˜ ๋ฉ”์ผ์„ ๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฒญํฌ ๋‹จ์œ„๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฉ”์ผ์„ ๋ณด๋‚ด๋ฉฐ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ Retry ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋ฉ”์ผ ์ „์†ก์„ ์žฌ์‹œ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ MD ํฌ๋งทํŒ…์„ ์ง€์›ํ•˜๊ณ  ์–‘์‹ ๋˜ํ•œ ๊น”๋”ํ•˜๊ณ  ์ •๋ˆ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Quick Start Guide

1. Docker๋ฅผ ์‚ฌ์šฉํ•ด MYSQL ์„ค์น˜

Spring-Batch๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋Š” ํ…Œ์ด๋ธ”์ด ์—†์œผ๋ฉด ์‹คํ–‰์ด ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ•„์ˆ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค์น˜ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

version: "3"
services:
  db:
    image: mysql:8.0
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: 1234 # ์‚ฌ์šฉ์ž์— ๋งž๊ฒŒ MYSQL ROOT ๋น„๋ฐ€๋ฒˆํ˜ธ ์ˆ˜์ •
      MYSQL_DATABASE: springBatch # ์‚ฌ์šฉ์ž์— ๋งž๊ฒŒ ์ด๋ฆ„ ์ˆ˜์ •
      MYSQL_USER: user # ์‚ฌ์šฉ์ž์— ๋งž๊ฒŒ ์ด๋ฆ„ ๋ณ€๊ฒฝ  
      MYSQL_PASSWORD: 1234 # ์‚ฌ์šฉ์ž์— ๋งž๊ฒŒ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ
      TZ: Asia/Seoul

docker-compose.yml ํŒŒ์ผ ์ƒ์„ฑ ํ›„ docker-compose up ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด ๋„์ปค ์‹คํ–‰

2. ํ”„๋กœ์ ํŠธ clone

https://github.com/BDD-CLUB/BDD-Bulk-Mailing-Service.git

3. application.yml ํŒŒ์ผ ์ถ”๊ฐ€

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ๊ณผ ์ด๋ฉ”์ผ ์—ฐ๋™, API ์‚ฌ์šฉ์„ ์œ„ํ•œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ yml ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ ๊ฒฝ๋กœ๋Š” spring-batch > src > main > resources > application.yml ์ž…๋‹ˆ๋‹ค.

spring:
  mail:
    host: smtp.gmail.com
    port: 587
    username: # fix
    password: # fix
    properties:
      mail.smtp.starttls.enable: true
      mail.smtp.auth: true
    protocol: smtp
  datasource:
    url: jdbc:mysql://localhost:3306/{}?serverTimezone=Asia/Seoul&characterEncoding=UTF-8 # fix {}๋Š” ์ž…๋ ฅํ•˜๊ณ  ์ œ๊ฑฐํ•  ๊ฒƒ.
    username: user # fix
    password: 1234 # fix
    driver-class-name: com.mysql.cj.jdbc.Driver
  batch:
    jdbc:
      initialize-schema: always
    job:
      enabled: false
      name: ${job.name:NONE}
  jpa:
    hibernate:
      ddl-auto: update
    database-platform: org.hibernate.dialect.MySQL8Dialect
    defer-datasource-initialization: true
    properties:
      hibernate:
        format_sql: true
    show-sql: true

4. Database Table ์ƒ์„ฑ

์œ„์˜ ์„ค๋ช…๋Œ€๋กœ DB์— ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ๊ธฐ ์œ„ํ•œ ํ…Œ์ด๋ธ”์ด ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ SQL ๋ฌธ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

SELECT * FROM springBatch.BATCH_JOB_EXECUTION;CREATE TABLE `BATCH_JOB_EXECUTION` (
  `JOB_EXECUTION_ID` bigint NOT NULL,
  `VERSION` bigint DEFAULT NULL,
  `JOB_INSTANCE_ID` bigint NOT NULL,
  `CREATE_TIME` datetime(6) NOT NULL,
  `START_TIME` datetime(6) DEFAULT NULL,
  `END_TIME` datetime(6) DEFAULT NULL,
  `STATUS` varchar(10) DEFAULT NULL,
  `EXIT_CODE` varchar(2500) DEFAULT NULL,
  `EXIT_MESSAGE` varchar(2500) DEFAULT NULL,
  `LAST_UPDATED` datetime(6) DEFAULT NULL,
  PRIMARY KEY (`JOB_EXECUTION_ID`),
  KEY `JOB_INST_EXEC_FK` (`JOB_INSTANCE_ID`),
  CONSTRAINT `JOB_INST_EXEC_FK` FOREIGN KEY (`JOB_INSTANCE_ID`) REFERENCES `BATCH_JOB_INSTANCE` (`JOB_INSTANCE_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `BATCH_JOB_EXECUTION_CONTEXT` (
  `JOB_EXECUTION_ID` bigint NOT NULL,
  `SHORT_CONTEXT` varchar(2500) NOT NULL,
  `SERIALIZED_CONTEXT` text,
  PRIMARY KEY (`JOB_EXECUTION_ID`),
  CONSTRAINT `JOB_EXEC_CTX_FK` FOREIGN KEY (`JOB_EXECUTION_ID`) REFERENCES `BATCH_JOB_EXECUTION` (`JOB_EXECUTION_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `BATCH_JOB_EXECUTION_PARAMS` (
  `JOB_EXECUTION_ID` bigint NOT NULL,
  `PARAMETER_NAME` varchar(100) NOT NULL,
  `PARAMETER_TYPE` varchar(100) NOT NULL,
  `PARAMETER_VALUE` varchar(2500) DEFAULT NULL,
  `IDENTIFYING` char(1) NOT NULL,
  KEY `JOB_EXEC_PARAMS_FK` (`JOB_EXECUTION_ID`),
  CONSTRAINT `JOB_EXEC_PARAMS_FK` FOREIGN KEY (`JOB_EXECUTION_ID`) REFERENCES `BATCH_JOB_EXECUTION` (`JOB_EXECUTION_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `BATCH_JOB_EXECUTION_SEQ` (
  `ID` bigint NOT NULL,
  `UNIQUE_KEY` char(1) NOT NULL,
  UNIQUE KEY `UNIQUE_KEY_UN` (`UNIQUE_KEY`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `BATCH_JOB_INSTANCE` (
  `JOB_INSTANCE_ID` bigint NOT NULL,
  `VERSION` bigint DEFAULT NULL,
  `JOB_NAME` varchar(100) NOT NULL,
  `JOB_KEY` varchar(32) NOT NULL,
  PRIMARY KEY (`JOB_INSTANCE_ID`),
  UNIQUE KEY `JOB_INST_UN` (`JOB_NAME`,`JOB_KEY`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `BATCH_JOB_SEQ` (
  `ID` bigint NOT NULL,
  `UNIQUE_KEY` char(1) NOT NULL,
  UNIQUE KEY `UNIQUE_KEY_UN` (`UNIQUE_KEY`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `BATCH_STEP_EXECUTION` (
  `STEP_EXECUTION_ID` bigint NOT NULL,
  `VERSION` bigint NOT NULL,
  `STEP_NAME` varchar(100) NOT NULL,
  `JOB_EXECUTION_ID` bigint NOT NULL,
  `CREATE_TIME` datetime(6) NOT NULL,
  `START_TIME` datetime(6) DEFAULT NULL,
  `END_TIME` datetime(6) DEFAULT NULL,
  `STATUS` varchar(10) DEFAULT NULL,
  `COMMIT_COUNT` bigint DEFAULT NULL,
  `READ_COUNT` bigint DEFAULT NULL,
  `FILTER_COUNT` bigint DEFAULT NULL,
  `WRITE_COUNT` bigint DEFAULT NULL,
  `READ_SKIP_COUNT` bigint DEFAULT NULL,
  `WRITE_SKIP_COUNT` bigint DEFAULT NULL,
  `PROCESS_SKIP_COUNT` bigint DEFAULT NULL,
  `ROLLBACK_COUNT` bigint DEFAULT NULL,
  `EXIT_CODE` varchar(2500) DEFAULT NULL,
  `EXIT_MESSAGE` varchar(2500) DEFAULT NULL,
  `LAST_UPDATED` datetime(6) DEFAULT NULL,
  PRIMARY KEY (`STEP_EXECUTION_ID`),
  KEY `JOB_EXEC_STEP_FK` (`JOB_EXECUTION_ID`),
  CONSTRAINT `JOB_EXEC_STEP_FK` FOREIGN KEY (`JOB_EXECUTION_ID`) REFERENCES `BATCH_JOB_EXECUTION` (`JOB_EXECUTION_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `BATCH_STEP_EXECUTION_CONTEXT` (
  `STEP_EXECUTION_ID` bigint NOT NULL,
  `SHORT_CONTEXT` varchar(2500) NOT NULL,
  `SERIALIZED_CONTEXT` text,
  PRIMARY KEY (`STEP_EXECUTION_ID`),
  CONSTRAINT `STEP_EXEC_CTX_FK` FOREIGN KEY (`STEP_EXECUTION_ID`) REFERENCES `BATCH_STEP_EXECUTION` (`STEP_EXECUTION_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `BATCH_STEP_EXECUTION_SEQ` (
  `ID` bigint NOT NULL,
  `UNIQUE_KEY` char(1) NOT NULL,
  UNIQUE KEY `UNIQUE_KEY_UN` (`UNIQUE_KEY`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `mail` (
  `id` bigint NOT NULL,
  `message` varchar(2000) NOT NULL,
  `title` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `mail_seq` (
  `next_val` bigint DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `member` (
  `id` bigint NOT NULL,
  `email` varchar(255) NOT NULL,
  `name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `member_role` (
  `id` bigint NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `member_role_seq` (
  `next_val` bigint DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `member_seq` (
  `next_val` bigint DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

ํ…Œ์ด๋ธ”์‚ฌ์ง„

5. Spring boot ์‹คํ–‰ ํ›„ localhost:8080 ์ ‘์†

  • ๋ฉ”์ธ ํŽ˜์ด์ง€(/index.html)

ํ…Œ์ด๋ธ”์‚ฌ์ง„

  • ๋ฉ”์ผ์„ ๋ฐœ์†กํ•  ํšŒ์› ์ €์žฅ(/member)

ํ…Œ์ด๋ธ”์‚ฌ์ง„

  • ์ €์žฅ๋œ ํšŒ์› ์กฐํšŒ(/members)

ํ…Œ์ด๋ธ”์‚ฌ์ง„

  • ๋Œ€๊ทœ๋ชจ ์ „์†กํ•  ๋ฉ”์ผ ์ œ๋ชฉ๊ณผ ๋ณธ๋ฌธ ์ €์žฅ(/news-mail)

ํ…Œ์ด๋ธ”์‚ฌ์ง„

{
  "title": "Spring Batch Mailing Service Test 1",
  "text": "### BDD Mailing Service 1์ฐจ ํ…Œ์ŠคํŠธ\n\n์•ˆ๋…•ํ•˜์„ธ์š”. ๋ถ€์‚ฐ ๊ฐœ๋ฐœ ๋™์•„๋ฆฌ BDD์ž…๋‹ˆ๋‹ค.\n\nBDD ๋‰ด์Šค๋ ˆํ„ฐ๋ฅผ ์ด์šฉํ•ด์ฃผ์‹œ๋Š” ์„ ๋ฐฐ๋‹˜๋“ค๊ป˜ ์ง„์‹ฌ์œผ๋กœ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.\n\n์•„๋ž˜๋Š” 2024๋…„ 1์›” BDD์˜ ํ™œ๋™ ๋‚ด์—ญ๋“ค์ž…๋‹ˆ๋‹ค.\n\n### ๋ฉ”์ธํŽ˜์ด์ง€ ์‹œ์•ˆ ์ž‘์„ฑ\n\n![๋ฉ”์ธํŽ˜์ด์ง€ ์‹œ์•ˆ](https://file.notion.so/f/f/aaedcf79-6b31-4898-9a1f-5e2ad8ae925e/572fb2d5-3374-4e26-bd5f-65c17b11986f/%ED%94%84%EB%A6%AC%EC%A0%A0%ED%85%8C%EC%9D%B4%EC%85%9814.png?id=1f34b78c-5b64-4797-bb6c-6bd69eeeb0c1&table=block&spaceId=aaedcf79-6b31-4898-9a1f-5e2ad8ae925e&expirationTimestamp=1704960000000&signature=01l0U7nCxzkknY-KQ0rQabOsdH3HVhDu8e3lA1cBMGE&downloadName=%ED%94%84%EB%A6%AC%EC%A0%A0%ED%85%8C%EC%9D%B4%EC%85%9814.png)\n\n### ํŒ€ ํŽ˜์ด์ง€ ๋””์ž์ด๋‹\n\n![ํŒ€ ํŽ˜์ด์ง€ ๋””์ž์ด๋‹](https://file.notion.so/f/f/aaedcf79-6b31-4898-9a1f-5e2ad8ae925e/e7925170-bd44-4099-8360-8a767d29c407/%ED%94%84%EB%A6%AC%EC%A0%A0%ED%85%8C%EC%9D%B4%EC%85%9813.png?id=7517ebbd-d7cb-4992-af1f-7f6e623257e3&table=block&spaceId=aaedcf79-6b31-4898-9a1f-5e2ad8ae925e&expirationTimestamp=1704960000000&signature=f0LAF0CeWRpJ7CEwgDg562kWvFzfIU0EiZjaVDVTkSY&downloadName=%ED%94%84%EB%A6%AC%EC%A0%A0%ED%85%8C%EC%9D%B4%EC%85%9813.png)\n\n์•ž์œผ๋กœ๋„ ์ €ํฌ BDD๋ฅผ ๋งŽ์ด ์‚ฌ๋ž‘ํ•ด์ฃผ์„ธ์š”. \n\n๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค."
}
### BDD Mailing Service 1์ฐจ ํ…Œ์ŠคํŠธ

์•ˆ๋…•ํ•˜์„ธ์š”. ๋ถ€์‚ฐ ๊ฐœ๋ฐœ ๋™์•„๋ฆฌ BDD์ž…๋‹ˆ๋‹ค.

BDD ๋‰ด์Šค๋ ˆํ„ฐ๋ฅผ ์ด์šฉํ•ด์ฃผ์‹œ๋Š” ์„ ๋ฐฐ๋‹˜๋“ค๊ป˜ ์ง„์‹ฌ์œผ๋กœ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” 2024๋…„ 1์›” BDD์˜ ํ™œ๋™ ๋‚ด์—ญ๋“ค์ž…๋‹ˆ๋‹ค.

### ๋ฉ”์ธํŽ˜์ด์ง€ ์‹œ์•ˆ ์ž‘์„ฑ

![๋ฉ”์ธํŽ˜์ด์ง€ ์‹œ์•ˆ](https://file.notion.so/f/f/aaedcf79-6b31-4898-9a1f-5e2ad8ae925e/572fb2d5-3374-4e26-bd5f-65c17b11986f/%ED%94%84%EB%A6%AC%EC%A0%A0%ED%85%8C%EC%9D%B4%EC%85%9814.png?id=1f34b78c-5b64-4797-bb6c-6bd69eeeb0c1&table=block&spaceId=aaedcf79-6b31-4898-9a1f-5e2ad8ae925e&expirationTimestamp=1704960000000&signature=01l0U7nCxzkknY-KQ0rQabOsdH3HVhDu8e3lA1cBMGE&downloadName=%ED%94%84%EB%A6%AC%EC%A0%A0%ED%85%8C%EC%9D%B4%EC%85%9814.png)

### ํŒ€ ํŽ˜์ด์ง€ ๋””์ž์ด๋‹

![ํŒ€ ํŽ˜์ด์ง€ ๋””์ž์ด๋‹](https://file.notion.so/f/f/aaedcf79-6b31-4898-9a1f-5e2ad8ae925e/e7925170-bd44-4099-8360-8a767d29c407/%ED%94%84%EB%A6%AC%EC%A0%A0%ED%85%8C%EC%9D%B4%EC%85%9813.png?id=7517ebbd-d7cb-4992-af1f-7f6e623257e3&table=block&spaceId=aaedcf79-6b31-4898-9a1f-5e2ad8ae925e&expirationTimestamp=1704960000000&signature=f0LAF0CeWRpJ7CEwgDg562kWvFzfIU0EiZjaVDVTkSY&downloadName=%ED%94%84%EB%A6%AC%EC%A0%A0%ED%85%8C%EC%9D%B4%EC%85%9813.png)

์•ž์œผ๋กœ๋„ ์ €ํฌ BDD๋ฅผ ๋งŽ์ด ์‚ฌ๋ž‘ํ•ด์ฃผ์„ธ์š”.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ €์žฅ๋œ ๋ฉ”์ผ๋“ค์„ ์กฐํšŒ(/news-mails) ํ›„ title ํด๋ฆญ์‹œ ๋ฐœ์†ก๋  Mail Preview ์ œ๊ณต

ํ…Œ์ด๋ธ”์‚ฌ์ง„

์ €์žฅ๋œ ๋ฉ”์ผ๋“ค์€ ์ˆ˜์ •๊ณผ ์‚ญ์ œ ๋ฉ”์ผ ๋ฐœ์†ก๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ์ตœ์ข… ๋ฐœ์†ก๋œ ๋ฉ”์ผ

ํ…Œ์ด๋ธ”์‚ฌ์ง„

Customizing

๋ฉ”์ผ ์ƒ๋‹จ์˜ ๋ฐฐ๋„ˆ ์ˆ˜์ • ๋ฐฉ๋ฒ•

  1. springbatch > bdd > email > entity > MdFormatConvert ์ด๋™
  2. "<img" ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰ (Command + F) 9๋ฒˆ์งธ <img ํƒœ๊ทธ์˜ src๋ฅผ ์ˆ˜์ •

ํ•˜๋‹จ์˜ ์ด๋ฏธ์ง€ ํด๋ฆญ์‹œ ์ด๋™๋˜๋Š” ๊ฒฝ๋กœ ์ˆ˜์ •

  1. springbatch > bdd > email > entity > MdFormatConvert ์ด๋™
  2. "<img" ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰ (Command + F) 10, 11, 12 ๋ฒˆ์งธ <img ํƒœ๊ทธ์˜ src๋ฅผ ์ˆ˜์ •

Performance

v1.1.0

ItemReader Performance

ItemReader ์ข…๋ฅ˜ DB ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜ ๊ฑธ๋ฆฐ์‹œ๊ฐ„
JpaPagingItemReader 100,000 60s
JdbcCursorItemReader 100,000 5s

ItemProcessor Performance

ItemProcessor ์ข…๋ฅ˜ DB ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„
ItemProcessor 10,000 17m 17s
AsyncItemProcessor 10,000 3s

v2.0.0

๋ฉ”์ผ๋ง ์„œ๋น„์Šค ๋ฒ„์ „ DB ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„
v1.0.0 10,000 12h
v2.0.0 10,000 50s

License

Spring-Batch-Bulk-Mailing-Service๋Š” MIT ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ํŒŒ์ผ์„ ์ฐธ์กฐํ•ด์ฃผ์„ธ์š”.

Update

2023.12.30

MVP ๋ชจ๋ธ ์—…๋กœ๋“œ ๋ฐ README ์ž‘์„ฑ

2024.01.10 (v1.0.0)

  1. ๋งˆํฌ๋‹ค์šด Heading 3, img ๋งˆํฌ๋‹ค์šด ํƒœ๊ทธ๋ฅผ ์ง€์›ํ•˜๋„๋ก ์ˆ˜์ •

  2. ์—ฌ๋Ÿฌ๊ฐ€์ง€์˜ ์ด๋ฏธ์ง€๋ฅผ ์ง์ ‘ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜์ •

2024.01.11 (v1.0.1)

  1. mailItemReader๋ฅผ JpaPagingItemReader์—์„œ JdbcCursorItemReader๋กœ ์ˆ˜์ • (๋ฐ์ดํ„ฐ 10๋งŒ๊ฐœ ๊ธฐ์ค€์œผ๋กœ ์„ฑ๋Šฅ 12๋ฐฐ ์ƒ์Šน)

2024.01.12 (v1.1.0)

  1. ItemProcessor๋ฅผ ๋™๊ธฐํ™”์—์„œ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์ˆ˜์ • (๋ฐ์ดํ„ฐ 1๋งŒ๊ฐœ ๊ธฐ์ค€์œผ๋กœ 340๋ฐฐ ์ƒ์Šน)

2024.01.14 (v2.0.0)

  1. ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ ํ›„ ์‹ค์ œ ๋ฉ”์ผ API ํ…Œ์ŠคํŠธ ์™„๋ฃŒ
  2. ์ž์ž˜ํ•œ JS ์ฝ”๋“œ ์ˆ˜์ •

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published