30. 메시징 by sh
Last updated
Was this helpful?
Last updated
Was this helpful?
Spring 프레임 워크는 JmsTemplate
을 사용하는 JMS API의 단순화 된 사용에서 메시지를 비동기 적으로 수신하는 완전한 인프라 스트럭처에 이르기까지 메시징 시스템과의 통합을위한 광범위한 지원을 제공합니다. Spring AMQP는 'Advanced Message Queuing Protocol'과 비슷한 기능을 제공하며 Boot는 RabbitTemplate
및 RabbitMQ에 대한 자동 구성 옵션도 제공합니다. 또한 Spring Websocket에서 기본적으로 STOMP 메시징을 지원하며, Spring Boot는 시작과 초기 설정을 통해 자동 구성을 지원합니다.
javax.jms.ConnectionFactory
인터페이스는 JMS 브로커와 상호 작용하기위한 javax.jms.Connection
을 만드는 표준 방법을 제공합니다. Spring은 ConnectionFactory를 JMS와 함께 사용하기 위해 필요하지만 일반적으로 직접 사용하지 않아도되며 더 높은 수준의 메시징 추상화에 의존 할 수있습니다 (자세한 내용은 Spring Framework 참조 문서의 참조). 또한 Spring Boot는 메시지를 보내고 받기 위해 필요한 인프라를 자동으로 구성합니다.
Spring Boot는 클래스 패스에서 HornetQ를 사용할 수 있음을 감지하면 ConnectionFactory
를 자동으로 구성 할 수 있습니다. 브로커가 있으면 내장 된 브로커가 시작되고 자동으로 구성됩니다 (mode 등록 정보가 명시 적으로 설정되지 않은 경우). 지원되는 모드는 다음과 같습니다. "embedded
" (임베디드 브로커가 필요하며 명시적으로 클래스 경로에서 브로커를 사용할 수없는 경우 오류가 발생하도록 지정하기 위해)와 netty
전송 프로토콜을 사용하여 브로커에 연결하는 "native
" 입니다. 후자가 구성되면 스프링 부트는 기본 설정으로 로컬 시스템에서 실행중인 브로커에 연결하는 ConnectionFactory
를 구성합니다.
spring-boot-starter-hornetq
을 사용하고 있다면 기존 HornetQ 인스턴스에 연결하는 데 필요한 종속성과 JMS와 통합 할 Spring 인프라가 제공됩니다. org.hornetq:hornetq-jms-server
를 애플리케이션에 추가하면 임베디드 모드를 사용할 수있습니다.
HornetQ 구성은 spring.hornetq.*
의 외부 구성 등록 정보에 의해 제어됩니다. 예를 들어, application.properties
에 다음 섹션을 선언 할 수 있습니다.
브로커를 임베드 할 때 지속성을 사용할지 여부와 사용 가능하게 할 대상 목록을 선택할 수 있습니다. 기본 옵션을 사용하여 쉼표로 구분 된 목록으로 지정할 수 있습니다. 고급 큐 및 주제 구성 각각에 대해 org.hornetq.jms.server.config.JMSQueueConfiguration
또는 org.hornetq.jms.server.config.TopicConfiguration
유형의 Bean을 정의 할 수 있습니다.
JNDI 조회가 전혀 필요하지 않으며 대상은 HornetQ 구성의 'name'속성 또는 구성을 통해 제공된 이름을 사용하여 이름에 대해 확인됩니다.
또한 Spring Boot는 클래스 패스에서 ActiveMQ를 사용할 수 있음을 감지하면 ConnectionFactory
를 구성 할 수 있습니다. 브로커가있는 경우 포함 된 브로커가 시작되고 구성됩니다 (브로커 URL이 구성을 통해 지정되지 않은 경우).
ActiveMQ 구성은 spring.activemq.*
의 외부 구성 등록 정보에 의해 제어됩니다. 예를 들어, application.properties
에 다음 섹션을 선언 할 수 있습니다.
기본적으로 ActiveMQ는 대상이 아직 존재하지 않는 경우 대상을 생성하므로 대상은 제공된 이름과 비교하여 확인됩니다.
Application Server에서 응용 프로그램을 실행중인 경우 Spring Boot는 JNDI를 사용하여 JMS ConnectionFactory
를 찾으려고 시도합니다. 기본적으로 java:/JmsXA
및 java:/XAConnectionFactory
위치가 점검됩니다. 대체 위치를 지정해야하는 경우 spring.jms.jndi-name
속성을 사용할 수 있습니다.
Spring의 JmsTemplate
은 자동으로 구성되므로 직접 bean에 autowire 할 수 있습니다.
JMS 인프라가 존재할 때 모든 Bean에 @JmsListener
주석을 달아 청취자 엔드 포인트를 작성할 수 있습니다. JmsListenerContainerFactory
가 정의되어 있지 않은 경우, 디폴트의 JmsListenerContainerFactory
가 자동적으로 설정됩니다.
다음 구성 요소는 someQueue
대상에 리스너 끝점을 만듭니다.
지원되는 옵션에 대한 자세한 내용은 를 참조하십시오.
지원되는 옵션에 대해서는 를 참조하십시오.
(Spring 4.1의 새로운 기능)은 비슷한 방식으로 삽입 될 수 있습니다.
자세한 내용은 을 확인하십시오.