• 티스토리 홈
  • 프로필사진
    알쓸개잡
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
알쓸개잡
  • 프로필사진
    알쓸개잡
    • 분류 전체보기 (93)
      • 스프링부트 (52)
      • AWS (5)
      • 쿠버네티스 (7)
      • 자바 (19)
      • 인프라 (1)
      • ETC (8)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      • 반응형
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • spring boot JMS activemq connection factory
        2023년 09월 28일
        • 알쓸개잡
        • 작성자
        • 2023.09.28.:42
        반응형

        Spring Boot 에서 제공하는 JMS activemq의 autoconfiguration에 의해서 사용되는 ConnectionFactory의 유형과 설정에 대해서 기록한다.

         

        JmsPoolConnectionFactory

        connection pool을 지원하는 connection factory 이다. JmsPoolConnectionFactory를 사용하기 위해서는 아래 조건이 충족되어야 한다.

        • org.messaginghub:pooled-jms 디펜던시 추가가 필요하다. 해당 아티팩트에 JmsPoolConnectionFactory 구현체가 있다.
        • spring.activemq.pool.enabled: true 가 설정되어야 한다.

        CachingConnectionFactory

        SingleConnectionFactory를 확장한 클래스로써 ActiveMQConnectionFactory를 wrapping 한다. CachingConnectionFactory를 사용하기 위해서는 아래 조건이 충족되어야 한다.

        • spring.activemq.pool.enabled: false 혹은 설정 항목이 없어야 한다.
        • spring.jms.cache.enabled: true (default: true) 혹은 설정 항목이 없어야 한다.

        CachingConnectionFactory는 별도 설정이 없는 경우 디폴트로 동작한다.

         

        ActiveMQConnectionFactory

        ActiveMQConnectionFactory를 사용하기 위해서는 아래 조건이 충족되어야 한다.

        • spring.activemq.pool.enabled: false 혹은 설정 항목이 없어야 한다.
        • spring.jms.cache.enabled: false 가 설정되어야 한다.

        위 세가지 ConnectionFactory는 사용자가 직접 설정한 ConnectionFactory가 없는 경우 autoconfiguration에 의해서 주입된다.

         

        ActiveMQConnectionFactoryCustomizer

        ActiveMQConnectionFactoryCustomizer를 구현하여 ActiveMQConnectionFactory를 커스텀하게 설정할 수 있다. ActiveMQConnectionFactoryCustomizer는 아래 추상 메소드를 가지는 FunctionalInterface이다.

        void customize(ActiveMQConnectionFactory factory);

        인자로 전달되는 ActiveMQConnectionFactory에 추가적인 설정을 할 수 있다.

        ActiveMQConnectionFactoryCustomizer Bean을 생성하면 애플리케이션 기동시 ActiveMQConnectionFactoryCustomizer Bean의 customize가 호출 되며 이때 Bean으로 생성된 ActiveMQConnectionFactory가 customize의 인자로 전달된다.

        아래 코드는 ActiveMQConnectionFactoryCustomizer Bean을 생성하는 샘플 코드다.

        @Bean
        public ActiveMQConnectionFactoryCustomizer activeMQConnectionFactoryCustomizer() {
            return activeMQConnectionFactory -> {
                //아래 코드에 ActiveMQConnectionFactory에 추가적인 셋팅을 할 수 있다.
                activeMQConnectionFactory.setWatchTopicAdvisories(false);
                activeMQConnectionFactory.setUseAsyncSend(true);
                activeMQConnectionFactory.setCheckForDuplicates(true);
                activeMQConnectionFactory.setDispatchAsync(true);
                activeMQConnectionFactory.setAlwaysSyncSend(true);
            };
        }

         

        JmsPoolConnectionFactory vs CachingConnectionFactory

        모두 연결, 세션 및 메시지 프로듀서 인스턴스를 풀링하는 동일한 용도로 사용되지만 경우에 따라서 사용해야 하는 경우가 다르다.

        • ActiveMQ 클러스터링 환경을 구성하고 장애 처리 전송을 사용하는 경우 CachingConnectionFactory를 사용하지 않는 것이 좋다.
          • stackoverflow에 따르면 failover 접속 설정을 하더라도 한쪽 서버가 다운이 되면 failover 접속지도 연결이 되어야 하지만 failover 연결이 제대로 동작하지 않는다는 보고가 있다. JmsPoolConnectionFactory를 사용하면 해결이 된다고 함. 직접 재현 테스트까지 해보지는 않았다.
        • 향후에 JBoss MQ, WebSphere MQ와 같은 다른 브로커로 전환할 가능성이 있는 경우 ActiveMQ 코드와 결합도가 높은 JmsPoolConnectionFactory를 사용하지 않는 것이 좋다.
        반응형
        저작자표시 비영리 변경금지 (새창열림)

        '스프링부트' 카테고리의 다른 글

        spring bean scope  (0) 2023.10.03
        application events and listeners  (0) 2023.10.02
        Spring Boot AutoConfiguration 간단 모듈 만들어보기  (0) 2023.09.24
        spring boot actuator health endpoints delay check  (0) 2023.09.22
        spring boot websocket (웹소켓)  (0) 2023.09.20
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바