- java8 stream 병렬 처리

  spring batch 에서 threadPoolExectuor로 처리를 하다가, thread 간의 경합 문제가 발생하여 java8 parallel stream으로 변경하였고,

stream 내부가 궁금하여 찾아보게 되었다.

 

 

jmx를 이용하여, thread monitoring한 결과 forkJoinPool이 내부적으로 생성되면서 최대 core수 - 1 만큼 thread가 생성되어 병렬로 처리된다.

thread 수를 조정할 수 있을까? 있다!!

 

private ForkJoinPool forkJoinPool = new ForkJoinPool(계수);

forkJoinPool.submit(() -> list.parallelStream().블라블라);

 

 

forkJoin 풀 방식?

- divide and conquer 방식

참조 : http://hamait.tistory.com/612

 

 

 

 

 bulk insert onduplicate (mybatis)


  INSERT INTO 테이블
    (

     va1,

     val2
    )
  VALUES
   <foreach collection="list" separator="," item="data">
    ( 
    , NOW()
    ,#{data.value}
    )
   </foreach>
   ON DUPLICATE KEY UPDATE
              evd_val = values(컬럼명)
     </update>

 

multi maven 빌드 & 세팅

 

- import

 

 

parent-project
- child1
- child2
>>> SVN 이나 GIT 에서 다운 받았을때 로컬 세팅 시 순서
* 이클립스 내에서 메이븐 멀티모듈을 구성할때 package explore에서 하위 모듈이 프로젝트 형태로 보이게 하려면
* 하위 모듈내에 .project 파일을 생성해줘야 한다.
1. SVN으로 부터 다운 받는다
2. 하위 프로젝트인 "child1" 폴더에서 오른쪽 마우스에서 Import...를 선택
3. Select 창에서 General 폴더밑의 Existing Projects into Workspace 를 선택 후 Next 버튼클릭
4. Select root directory 에서 Browse..버튼클릭후 multiModules 폴더 밑의 "child1" 폴더를 선택 하고 Finish 버튼 클릭

5. 나머지 하위 프로젝트 폴더들도 1-4과정 동일하게 반복하여 설정 완료 한다.

 

참조링크 : http://blog.naver.com/PostView.nhn?blogId=choigohot&logNo=40188252806

 

- 빌드

 

--projects 빌드할 프로젝트명-am clean package -P profile 정보

 

 

* profile

-pl,--projects <arg> Build specified reactor projects instead of all projects

Multi-Project 구조에서 모든 프로젝트가 아닌 특정 프로젝트를 대상으로 mvn 을 수행하고 싶을 경우 ‘-pl’ 옵션을 사용하면 된다.

 

-am,--also-makeIf project list is specified, also build projects required by the list

‘-am’ 옵션은 ‘-pl’ 에 명시한 프로젝트를 참조하는 프로젝트 들도 같이 빌드 한다.

 

-amd,--also-make-dependentsIf project list is specified, also build projects that depend on projects on the list

‘-amd’ 옵션은 ‘-pl’ 에 명시한 프로젝트가 참조하고 있는 프로젝트 들을 같이 빌드 한다.

 

-B,--batch-modeRun in non-interactive (batch) mode

‘-B’ 옵션은 비-대화형 모드로 mvn 실행 중 대화형 입력 모드가 나오면 기본값으로 처리하고 넘어가도록 해준다.

예를 들어, A -> B -> C-> D-> E 와 같이 참조하고있는 프로젝트 에서

  • ‘-pl C -am’ 인 경우 C-D-E 프로젝트가 빌드
  • ‘-pl C -amd’ 인 경우 A-B-C 프로젝트가 빌드

https://bestna.wordpress.com/2014/11/12/maven-maven-options%E2%80%8A-%E2%80%8Apl-am-amd-b/

 

 

- maven multi module 구성

multi module로 구성이 되어있지 않은 경우는 hierarchy를 직접 관리 해줘야 했다.. (repository에 직접 배포하고... 등등)

maven multi module을 구성해놓으면, maven 이 알아서 복잡한 설정을 관리

1. 최상단 pom에 구성되어야 하는 module 넣어주기

2. 빌드할때는 repo를 보지않고,  부모 빌드할때 그 jar를 자식에게 넣어준다

3. am 리액트 옵션을 사용해 명시한 프로젝트를 참조하는 프로젝트 들도 같이 빌드 할 수있다.(참조관계는 maven goal 이 알아서)

+ Recent posts