티스토리 뷰
개요
저번 시간에 말씀드린 것 처럼 이번 시간에는 Kafka Connect를 활용해, 단일 DB에 데이터를 적재하는 과정을 거치려 합니다. MariaBD와 Order Kafka Topic, Order Kafka Producer를 조금 수정해야 합니다!
#MariaDB
가장 먼저 일단 MariaDB에 접속해줍니다. Windows환경 기준으로 저는 다음과 같이 접속했습니다.
// MariaDB 설치 폴더 Bin으로 이동
cd D:\mariadb-10.6.7-winx64\bin
// mysql 서버 실행 및 유저 정보 입력
mysql -uroot -p
// EnterPassword 출력 시 test1357 입력 or 본인이 설정한 root password로 접속
Enter password: ********
정상 접속 시 MariaDB[None]으로 나올 텐데 use mydb를 커맨드를 통해 mydb로 이동해줍니다.
MySql [(none)] > use mydb
#정상접속 시
다음으로는 Query문을 통해 orders Table을 생성해줍니다.
create table orders (
id int auto_increment primary key,
user_id varchar(50) not null,
product_id varchar(20) not null,
order_id varchar(50) not null,
qty int default 0,
unit_price int default 0,
total_price int default 0,
created_at datetime default now()
)
Query 실행 후 show tables 명령어를 통해서 정상 생성됐는지 확인해주세요.
해당 Table을 만드는 이유는 이제 단일 DB를 이용해 주문 정보를 저장할 예정이기 때문입니다. 그럼 저번에 말씀드렸던 주문 조회 시 동기화 이슈가 해당 DB에서 모든 주문정보가 저장되기에 문제가 해결 됩니다.
#application.yml ( Order - Servcie )
다음으로는 이제 참조할 DB를 바꿔야하기 때문에 Order-Service에서 application.yml을 수정하려합니다.
#전체코드
server:
port: 0
spring:
application:
name: order-service
h2:
console:
enabled: true
settings:
web-allow-others: true
path: /h2-console
jpa:
hibernate:
ddl-auto: update
datasource:
# driver-class-name: org.h2.Driver
# url: jdbc:h2:mem:testdb
url: jdbc:mysql://localhost:3307/mydb
driver-class-name: org.mariadb.jdbc.Driver
username: root
password: test1357
eureka:
instance:
instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}}
client:
register-with-eureka: true
fetch-registry: true
service-url:
defalutZone: http://127.0.0.1:8761/eureka
바뀐 부분은 datasource: 부분입니다. 따로 설명드릴 부분이 없네요... DB접속정보와 계정정보를 입력 하시면 DB연동은 완료가 됩니다.
datasource:
# driver-class-name: org.h2.Driver
# url: jdbc:h2:mem:testdb
url: jdbc:mysql://localhost:3307/mydb
driver-class-name: org.mariadb.jdbc.Driver
username: root
password: test1357
#TEST
(구동 서비스 : 워크스페이스 내부 서비스를 모두 실행해주세요.)
Post-Man에서 테스트하는 법을 복습할겸 유저등록부터 하겠습니다.
#유저등록
#로그인
아 진행하기에 앞서서 한가지 부분을 고치려합니다.
#OrderServiceClient.java
예전에 테스트목적으로 오류코드를 작성한것을 까먹고 그대로 뒀었습니다.
orders_trap으로 되어있는 부분을 orders로 다시 바꿔줍니다!
아래코드가 정상작동 코드입니다!
package com.example.userservice.client;
import com.example.userservice.vo.ResponseOrder;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import java.util.List;
/* 사용할 Service name 으로 등록해줍니다. */
@FeignClient(name="order-service")
public interface OrderServiceClient {
/* getOrders 를 만들어주고 해당경로값을 Mapping 해줍니다.
* userId는 가변값이기 때문에 PathVariable 으로 등록해줍니다.
*/
@GetMapping("/order-service/{userId}/orders")
List<ResponseOrder> getOrders(@PathVariable String userId);
}
#회원정보 조회
user/[userId] 로 접속할 것인데, 인증을 해야하기 때문에 Bearer Token에 아까 복사해둔 토큰을 넣은 뒤 Send를 진행합니다.
#카테고리 확인
http://localhost:8000/catalog-service/catalogs 로 접속해 상품정보 먼저 확인해줍니다.
#주문 등록
POST 타입으로
localhost:8000/[userID]/orders 요청을 보냅니다.
Body안에 주문 정보를 담는 것도 잊지 말아주세요.
아래와 같이 주문 성공 응답이 오면 성공입니다.
#에러가 나는 경우
저같은 경우는 Insert에서 오류가 자꾸 나서 어디서 문제가 나는지 체크 해봤습니다. 시도 해본 것으로는
1.주소 정보 잘못 기입 ( 첫번째 오류, Mysql로 접속해야하는데 mariadb로 잘 못 기입 ) 해결
2. 해결 후 Sql문 문제 발생 Table 문제여서 그냥 Drop 후 재생성
아마 주문 등록중 에러가 나시면 둘 중 하나 일 거에요. 혹시 몰라서 Kafka도 다시 실행시켰는데,
해당 부분은 문제가 아닌걸로 확인이 됐습니다.
#다시 회원정보 조회
다시 조회를 하게되면 다음과 같이, 아까는 공란이었던 주문정보가 추가된 것을 알 수 있습니다.
자 이제, 단일 DB로 설정했고 여러포트에서 같은 서비스가 실행되도 해당 DB에 저장되도록 셋팅을 바꿨습니다. 다음 포스팅 부터는, 본격적으로 Kafka와 연동을 통해서 저장할 수 있도록 바꿔보려 합니다.
감사합니다.
'웹 프로그래밍 > MSA 학개론' 카테고리의 다른 글
[MSA] Orders Microservice 고도화 - Order Kafka Producer TEST (0) | 2022.05.03 |
---|---|
[MSA] Orders Microservice 고도화 - Order Kafka Producer (0) | 2022.05.03 |
[MSA] 잠시 쉬어가는 Mutiple Service에서의 동기화 문제 (0) | 2022.05.03 |
[MSA] OrderService , CategoryService Kafka 연동 테스트 (0) | 2022.05.02 |
[MSA] Ecommerce Application 고도화(Apache Kafka 연동) (0) | 2022.05.02 |
- Total
- Today
- Yesterday
- Kafka Connect
- springcloud
- ACTUATOR
- github
- zipkin
- 루틴기록
- kafka
- Feign
- 빅-오
- elasticSearch
- Gateway
- MariaDB
- LoadBalancer
- rabbitmq
- Logstash 활용
- consumer
- docker
- 미래의나에게동기부여
- JWT
- UserService
- 운동
- config
- Logstash to ElasticSearch
- Spring + ELK
- producer
- prometheus
- 오늘저녁 삼겹살
- MSA
- 운동일기
- git
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |