스프링 부트 #4.14. 메시징
2020/06/15 - [IT/SpringBoot] - 스프링 부트 #4.13. 캐싱
2020/06/15 - [IT/SpringBoot] - 스프링 부트 #4.12. NoSQL
2020/06/15 - [IT/SpringBoot] - 스프링 부트 #4.11. SQL 데이터베이스 작업
2020/06/14 - [IT/SpringBoot] - 스프링 부트 #4.10. 보안
2020/06/14 - [IT/SpringBoot] - 스프링 부트 #4.8-9 Graceful/RSocket
2020/06/14 - [IT/SpringBoot] - 스프링 부트 #4.7 웹 애플리케이션 개발
2020/06/14 - [IT/SpringBoot] - 스프링 부트 #4.5-6 국제화/JSON
2020/06/14 - [IT/SpringBoot] - 스프링 부트 #4.3-4 프로필/로깅
4.14. 메시징
Spring Framework는 JMS API를 간소화된 사용부터 전체 인프라에 이르기까지 메시징 시스템과 통합하여 비동기적으로 메시지를 수신하는 광범위한 지원을 제공합니다. Spring AMQP는 고급 메시지 큐어링 프로토콜에 대해 유사한 기능 세트를 제공합니다. 스프링 부트은 또한 토끼MQ에 대한 자동 구성 옵션을 제공합니다. Spring WebSocket에는 기본적으로 STOMP 메시징에 대한 지원이 포함되어 있으며 스프링 부트은 스타터와 소량의 자동 구성을 통해 이를 지원합니다. 스프링 부트는 아파치 카프카를 지원합니다.JmsTemplate
RabbitTemplate
4.14.1. JMS
인터페이스는 JMS 브로커와 상호 작용하기 위한 표준 방법을 제공합니다. Spring은 JMS로 작업할 필요가 있지만 일반적으로 직접 사용할 필요가 없으며 대신 더 높은 수준의 메시징 추상화에 의존할 수 있습니다. (자세한 내용은 스프링 프레임워크 참조 설명서의 관련 섹션을 참조하십시오.) 또한 Spring Boot는 메시지를 보내고 받는 데 필요한 인프라를 자동으로 구성합니다.javax.jms.ConnectionFactory
javax.jms.Connection
ConnectionFactory
액티브MQ 지원
클래스 패스에서 ActiveMQ를 사용할 수 있는 경우 스프링 부트도 구성할 수 있습니다. 브로커가 있는 경우 임베디드 브로커가 자동으로 시작되고 구성됩니다(구성을 통해 브로커 URL이 지정되지 않은 경우).ConnectionFactory
사용하는 경우 JMS와 통합하는 스프링 인프라와 마찬가지로 ActiveMQ 인스턴스를 연결하거나 포함하는 데 필요한 종속성이 제공됩니다. spring-boot-starter-activemq |
ActiveMQ 구성은 외부 구성 속성에 의해 제어됩니다. 예를 들어 다음 섹션을 다음과 같은 섹션으로 선언할 수 있습니다.spring.activemq.*
application.properties
spring.activemq.broker-url=tcp://192.168.1.210:9876
spring.activemq.user=admin
spring.activemq.password=secret
기본적으로 기본 은 다음과 같은 외부 구성 속성으로 제어 할 수있는 합리적인 설정으로 네이티브를 래핑합니다.CachingConnectionFactory
ConnectionFactory
spring.jms.*
spring.jms.cache.session-cache-size=5
네이티브 풀링을 사용하는 경우 다음 예제와 같이 종속성을 추가하고 그에 따라 구성하여 이렇게 할 수 있습니다.org.messaginghub:pooled-jms
JmsPoolConnectionFactory
spring.activemq.pool.enabled=true
spring.activemq.pool.max-connections=50
지원되는 옵션에 대한 자세한 내용은 ActiveMQProperties를 참조하십시오. 고급 사용자 지정을 위해 구현하는 임의의 원두 수를 등록할 수도 있습니다. ActiveMQConnectionFactoryCustomizer |
기본적으로 ActiveMQ는 아직 존재하지 않는 경우 대상을 만들어 제공된 이름에 대해 대상을 해결합니다.
아르테미스 지원
스프링 부트은 클래스 경로에서 Artemis를 사용할 수 있음을 감지할 때 자동으로 구성할 수 있습니다. 브로커가 있는 경우 포함된 브로커가 자동으로 시작되고 구성됩니다(모드 속성이 명시적으로 설정되지 않는 한). 지원되는 모드는 임베디드 브로커가 필요하며 클래스패스에서 브로커를 사용할 수 없는 경우 오류가 발생해야 하며(전송 프로토콜을 사용하여 브로커에 연결)입니다. 후자를 구성하면 스프링 부트은 로컬 컴퓨터에서 실행 중인 브로커에 기본 설정을 연결하는 것을 구성합니다.ConnectionFactory
embedded
native
netty
ConnectionFactory
사용하는 경우 기존 Artemis 인스턴스에 연결하는 데 필요한 종속성과 JMS와 통합하는 스프링 인프라가 제공됩니다. 응용 프로그램에 추가하면 임베디드 모드를 사용할 수 있습니다. spring-boot-starter-artemis org.apache.activemq:artemis-jms-server |
Artemis 구성은 에서 외부 구성 속성에 의해 제어됩니다. 예를 들어 다음 섹션을 다음과 같은 섹션으로 선언할 수 있습니다.spring.artemis.*
application.properties
spring.artemis.mode=native
spring.artemis.host=192.168.1.210
spring.artemis.port=9876
spring.artemis.user=admin
spring.artemis.password=secret
브로커를 포함할 때 지속성을 사용하도록 설정하고 사용할 수 있도록 해야 할 대상을 나열할지 선택할 수 있습니다. 이러한 목록은 쉼표 구분 목록으로 지정하여 기본 옵션으로 만들거나, 고급 큐 및 토픽 구성의 경우 빈(들)을 정의하거나 고급 큐 및 토픽 구성의 경우 각각 정의할 수 있습니다.org.apache.activemq.artemis.jms.server.config.JMSQueueConfiguration
org.apache.activemq.artemis.jms.server.config.TopicConfiguration
기본적으로 기본 은 다음과 같은 외부 구성 속성으로 제어 할 수있는 합리적인 설정으로 네이티브를 래핑합니다.CachingConnectionFactory
ConnectionFactory
spring.jms.*
spring.jms.cache.session-cache-size=5
네이티브 풀링을 사용하는 경우 다음 예제와 같이 종속성을 추가하고 그에 따라 구성하여 이렇게 할 수 있습니다.org.messaginghub:pooled-jms
JmsPoolConnectionFactory
spring.artemis.pool.enabled=true
spring.artemis.pool.max-connections=50
더 지원되는 옵션은 ArtemisProperties를
참조하십시오.
JNDI 조회가 관련되지 않으며 Artemis 구성의 특성 또는 구성을 통해 제공된 이름을 사용하여 대상은 이름에 대해 해결됩니다.name
JNDI 연결 팩토리 사용
응용 프로그램 서버에서 응용 프로그램을 실행하는 경우 Spring 부트은 JNDI를 사용하여 JMS를 찾으려고 합니다. 기본적으로 위치와 위치가 선택됩니다. 다음 예제와 같이 대체 위치를 지정해야 하는 경우 속성을 사용할 수 있습니다.ConnectionFactory
java:/JmsXA
java:/XAConnectionFactory
spring.jms.jndi-name
spring.jms.jndi-name=java:/MyConnectionFactory
메시지 보내기
스프링은 자동 구성되며 다음 예제와 같이 직접 원두에 자동 연결할 수 있습니다.JmsTemplate
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
private final JmsTemplate jmsTemplate;
@Autowired
public MyBean(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
// ...
}
Jms메시징템플릿은 유사한 방식으로 주입될 수 있습니다. 또는 콩이 정의된 경우 자동으로 구성된 에 자동으로 연결됩니다. DestinationResolver MessageConverter JmsTemplate |
메시지 수신
JMS 인프라가 있는 경우 모든 빈에 추가하여 리스너 끝점을 만들 수 있습니다. 정의되지 않은 경우 기본 값은 자동으로 구성됩니다. 또는 원두가 정의된 경우 기본 팩터리와 자동으로 연결됩니다.@JmsListener
JmsListenerContainerFactory
DestinationResolver
MessageConverter
기본적으로 기본 팩터리는 트랜잭션입니다. a가 있는 인프라에서 실행하는 경우 기본적으로 리스너 컨테이너에 연결됩니다. 그렇지 않은 경우 플래그가 활성화됩니다. 후자의 시나리오에서는 로컬 데이터 저장소 트랜잭션을 수신 자 방법(또는 그 대리인)에 추가하여 들어오는 메시지 처리에 연결할 수 있습니다. 이렇게 하면 로컬 트랜잭션이 완료되면 들어오는 메시지가 인정됩니다. 여기에는 동일한 JMS 세션에서 수행된 응답 메시지 보내기도 포함됩니다.JtaTransactionManager
sessionTransacted
@Transactional
다음 구성 요소는 대상에서 수신기 끝점을 만듭니다.someQueue
@Component
public class MyBean {
@JmsListener(destination = "someQueue")
public void processMessage(String content) {
// ...
}
}
자세한 내용은 @EnableJms 자바독을 참조하십시오. |
더 많은 인스턴스를 만들어야 하거나 기본값을 재정의하려는 경우 Spring Boot는 자동으로 구성된 인스턴스와 동일한 설정을 사용하여 초기화하는 데 사용할 수 있는 인스턴스를 제공합니다.JmsListenerContainerFactory
DefaultJmsListenerContainerFactoryConfigurer
DefaultJmsListenerContainerFactory
예를 들어 다음 예제에서는 특정 한 다음을 사용하는 다른 팩터리가 노출됩니다.MessageConverter
@Configuration(proxyBeanMethods = false)
static class JmsConfiguration {
@Bean
public DefaultJmsListenerContainerFactory myFactory(
DefaultJmsListenerContainerFactoryConfigurer configurer) {
DefaultJmsListenerContainerFactory factory =
new DefaultJmsListenerContainerFactory();
configurer.configure(factory, connectionFactory());
factory.setMessageConverter(myMessageConverter());
return factory;
}
}
그런 다음 다음과 같이 모든 -notated 메서드에서 팩터리 팩터리 된 방식으로 팩터리를 사용할 수 있습니다.@JmsListener
@Component
public class MyBean {
@JmsListener(destination = "someQueue", containerFactory="myFactory")
public void processMessage(String content) {
// ...
}
}
4.14.2. AMQP
고급 메시지 큐잉 프로토콜(AMQP)은 메시지 지향 미들웨어를 위한 플랫폼 중립적인 와이어 수준 프로토콜입니다. Spring AMQP 프로젝트는 AMQP 기반 메시징 솔루션 개발에 핵심 스프링 개념을 적용합니다. 스프링 부트는 "스타터"를 포함하여 RabbitMQ를 통해 AMQP와 함께 작업할 수 있는 몇 가지 편의를 제공합니다.spring-boot-starter-amqp
RabbitMQ 지원
RabbitMQ는 AMQP 프로토콜을 기반으로 하는 가볍고 안정적이며 확장 가능하며 휴대용 메시지 브로커입니다. 스프링은 AMQP 프로토콜을 통해 통신하는 데 사용합니다.RabbitMQ
RabbitMQ 구성은 에서 외부 구성 속성에 의해 제어됩니다. 예를 들어 다음 섹션을 다음과 같은 섹션으로 선언할 수 있습니다.spring.rabbitmq.*
application.properties
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=secret
또는 특성을 사용하여 동일한 연결을 구성할 수 있습니다.addresses
spring.rabbitmq.addresses=amqp://admin:secret@localhost
그런 식으로 주소를 지정할 때 속성은 무시됩니다. 주소가 프로토콜을 사용하는 경우 SSL 지원이 자동으로 활성화됩니다. host port amqps |
컨텍스트에 bean이 있으면 자동으로 자동으로 구성된 에서 만든 연결의 이름을 지정하는 데 사용됩니다. 지원되는 옵션에 대한 자세한 내용은 RabbitProperties를
참조하십시오.ConnectionNameStrategy
ConnectionFactory
자세한 내용은 RabbitMQ에서 사용하는 프로토콜인 AMQP 이해를 참조하십시오. |
메시지 보내기
스프링은 자동 구성되며 다음 예제와 같이 직접 콩에 자동 연결할 수 있습니다.AmqpTemplate
AmqpAdmin
import org.springframework.amqp.core.AmqpAdmin;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
private final AmqpAdmin amqpAdmin;
private final AmqpTemplate amqpTemplate;
@Autowired
public MyBean(AmqpAdmin amqpAdmin, AmqpTemplate amqpTemplate) {
this.amqpAdmin = amqpAdmin;
this.amqpTemplate = amqpTemplate;
}
// ...
}
토끼 메시징 템플릿은 유사한 방식으로 주입 될 수있다. 콩이 정의되면 자동으로 구성된 에 자동으로 연결됩니다. MessageConverter AmqpTemplate |
필요한 경우 bean으로 정의된 모든 것이 RabbitMQ 인스턴스에서 해당 큐를 선언하는 데 자동으로 사용됩니다.org.springframework.amqp.core.Queue
작업을 다시 시도하려면 브로커 연결이 손실된 경우와 같은 재시도를 활성화할 수 있습니다.AmqpTemplate
spring.rabbitmq.template.retry.enabled=true
spring.rabbitmq.template.retry.initial-interval=2s
재시도는 기본적으로 비활성화됩니다. 콩을 선언하여 프로그래밍 방식으로 사용자 지정할 수도 있습니다.RetryTemplate
RabbitRetryTemplateCustomizer
인스턴스를 더 많이 만들어야 하거나 기본값을 재정의하려는 경우 Spring Boot는 자동 구성에서 사용하는 공장과 동일한 설정을 초기화하는 데 사용할 수 있는 빈을 제공합니다.RabbitTemplate
RabbitTemplateConfigurer
RabbitTemplate
메시지 수신
토끼 인프라가 있으면 모든 콩에 추가하여 리스너 끝점을 만들 수 있습니다. 정의되지 않은 경우 기본값이 자동으로 구성되고 속성을 사용하여 직접 컨테이너로 전환할 수 있습니다. 또는 콩이 정의된 경우 기본 팩터리와 자동으로 연결됩니다.@RabbitListener
RabbitListenerContainerFactory
SimpleRabbitListenerContainerFactory
spring.rabbitmq.listener.type
MessageConverter
MessageRecoverer
다음 샘플 구성 요소는 큐에 리스너 끝점을 만듭니다.someQueue
@Component
public class MyBean {
@RabbitListener(queues = "someQueue")
public void processMessage(String content) {
// ...
}
}
자세한 내용은 @EnableRabbit 자바독을 참조하십시오. |
더 많은 인스턴스를 만들어야 하거나 기본값을 재정의하려는 경우 Spring Boot는 자동 구성에서 사용하는 팩터리와 동일한 설정을 사용하여 a 및 a를 초기화하는 데 사용할 수 있는 a를 제공합니다.RabbitListenerContainerFactory
SimpleRabbitListenerContainerFactoryConfigurer
DirectRabbitListenerContainerFactoryConfigurer
SimpleRabbitListenerContainerFactory
DirectRabbitListenerContainerFactory
선택한 컨테이너 유형은 중요하지 않습니다. 이 두 개의 콩은 자동 구성에 의해 노출됩니다. |
예를 들어 다음 구성 클래스는 특정 을 사용하는 다른 팩터리에서 노출됩니다.MessageConverter
@Configuration(proxyBeanMethods = false)
static class RabbitConfiguration {
@Bean
public SimpleRabbitListenerContainerFactory myFactory(
SimpleRabbitListenerContainerFactoryConfigurer configurer) {
SimpleRabbitListenerContainerFactory factory =
new SimpleRabbitListenerContainerFactory();
configurer.configure(factory, connectionFactory);
factory.setMessageConverter(myMessageConverter());
return factory;
}
}
그런 다음 다음과 같이 모든 -notated 메서드에서 공장을 사용할 수 있습니다.@RabbitListener
@Component
public class MyBean {
@RabbitListener(queues = "someQueue", containerFactory="myFactory")
public void processMessage(String content) {
// ...
}
}
재시도를 활성화하여 수신기가 예외를 throw하는 상황을 처리할 수 있습니다. 기본적으로 사용되지만 사용자 고유의 정의할 수 있습니다. 재시도가 소진되면 브로커가 그렇게 하도록 구성된 경우 메시지가 거부되고 삭제되거나 데드 레터 교환으로 라우팅됩니다. 기본적으로 재시도사용할 수 없습니다. 콩을 선언하여 프로그래밍 방식으로 사용자 지정할 수도 있습니다.RejectAndDontRequeueRecoverer
MessageRecoverer
RetryTemplate
RabbitRetryTemplateCustomizer
기본적으로 재시도가 비활성화되고 수신기가 예외를 throw하면 배달이 무기한 다시 시도됩니다. 이 동작은 두 가지 방법으로 이 동작을 수정할 수 있습니다: 속성을 제로 다시 배달을 시도하도록 설정하거나 메시지를 거부해야 한다는 신호를 던집니다. 후자는 재시도를 사용하도록 설정하고 배달 시도의 최대 수에 도달 할 때 사용되는 메커니즘입니다. defaultRequeueRejected false AmqpRejectAndDontRequeueException |
4.14.3. 아파치 카프카 지원
아파치 카프카는 프로젝트의 자동 구성을 제공함으로써 지원됩니다.spring-kafka
Kafka 구성은 외부 구성 속성에 의해 제어됩니다. 예를 들어 다음 섹션을 다음과 같은 섹션으로 선언할 수 있습니다.spring.kafka.*
application.properties
spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.consumer.group-id=myGroup
시작시 주제를 만들려면 빈 형식의 빈을 추가합니다. 주제가 이미 있는 경우 콩은 무시됩니다. NewTopic |
더 지원되는 옵션은 KafkaProperties를
참조하십시오.
메시지 보내기
스프링은 자동 구성되며 다음 예제와 같이 자신의 콩에서 직접 자동 연결할 수 있습니다.KafkaTemplate
@Component
public class MyBean {
private final KafkaTemplate kafkaTemplate;
@Autowired
public MyBean(KafkaTemplate kafkaTemplate) {
this.kafkaTemplate = kafkaTemplate;
}
// ...
}
속성이 정의되면 a가 자동으로 구성됩니다. 또한 콩이 정의되면 자동으로 구성된 에 연결됩니다. spring.kafka.producer.transaction-id-prefix KafkaTransactionManager RecordMessageConverter KafkaTemplate |
메시지 수신
아파치 카프카 인프라가 있는 경우 모든 콩에 추가하여 리스너 엔드포인트를 만들 수 있습니다. 정의되지 않은 경우 기본 값은 에 정의된 키로 자동으로 구성됩니다.@KafkaListener
KafkaListenerContainerFactory
spring.kafka.listener.*
다음 구성 요소는 주제에 대한 수신기 끝점을 만듭니다.someTopic
@Component
public class MyBean {
@KafkaListener(topics = "someTopic")
public void processMessage(String content) {
// ...
}
}
콩이 정의되면 컨테이너 공장에 자동으로 연결됩니다. 마찬가지로, 또는 콩이 정의된 경우 기본 팩터리에 자동으로 연결됩니다.KafkaTransactionManager
ErrorHandler
AfterRollbackProcessor
ConsumerAwareRebalanceListener
수신기 유형에 따라 또는 콩이 기본 팩터리에 연결됩니다. 일괄 처리 수신기에 콩만 있으면 .RecordMessageConverter
BatchMessageConverter
RecordMessageConverter
BatchMessageConverter
일반적으로 자동 구성된 콩을 참조할 때 사용자 지정을 표시해야 합니다. ChainedKafkaTransactionManager @Primary KafkaTransactionManager |
카프카 스트림
아파치 카프카의 스프링은 공장 콩을 제공하여 물체를 만들고 개울의 수명 주기를 관리합니다. 스프링 부트은 클래스패스에 있는 한 필요한 콩을 자동 구성하고, 카프카 스트림은 이노션을 통해 활성화된다.StreamsBuilder
KafkaStreamsConfiguration
kafka-streams
@EnableKafkaStreams
Kafka Stream을 사용하도록 설정하면 응용 프로그램 ID와 부트스트랩 서버를 설정해야 합니다. 전자는 설정하지 않을 경우 기본값으로 구성할 수 있습니다. 후자는 전 세계적으로 설정하거나 스트림에 대해 특별히 재정의할 수 있습니다.spring.kafka.streams.application-id
spring.application.name
전용 속성을 사용하여 몇 가지 추가 속성을 사용할 수 있습니다. 다른 임의의 Kafka 속성은 네임스페이스를 사용하여 설정할 수 있습니다. 자세한 내용은 추가 카프카 속성을 참조하십시오.spring.kafka.streams.properties
공장 콩을 사용하려면 다음 예제와 같이 와이어링하기만 하면 됩니다.StreamsBuilder
@Bean
@Configuration(proxyBeanMethods = false)
@EnableKafkaStreams
public static class KafkaStreamsExampleConfiguration {
@Bean
public KStream<Integer, String> kStream(StreamsBuilder streamsBuilder) {
KStream<Integer, String> stream = streamsBuilder.stream("ks1In");
stream.map((k, v) -> new KeyValue<>(k, v.toUpperCase())).to("ks1Out",
Produced.with(Serdes.Integer(), new JsonSerde<>()));
return stream;
}
}
기본적으로 개체가 만드는 개체에 의해 관리되는 스트림이 자동으로 시작됩니다. 속성을 사용하여 이 동작을 사용자 지정할 수 있습니다.StreamBuilder
spring.kafka.streams.auto-startup
추가 카프카 속성
자동 구성에서 지원하는 속성은 공통 응용 프로그램 속성에표시됩니다. 대부분의 경우 이러한 속성(하이픈 또는 낙타케이스)이 아파치 카프카 점선 속성에 직접 매핑됩니다. 자세한 내용은 아파치 카프카 문서를 참조하십시오.
이러한 속성중 처음 몇 가지는 모든 구성 요소(생산자, 소비자, 관리자 및 스트림)에 적용되지만 다른 값을 사용하려는 경우 구성 요소 수준에서 지정할 수 있습니다. 아파치 카프카는 HIGH, 미디엄 또는 로우의 중요성을 가진 속성을 지정합니다. 스프링 부트 자동 구성은 모든 중요도 속성, 일부 선택된 MEDIUM 및 LOW 속성 및 기본 값이 없는 모든 속성을 지원합니다.
Kafka에서 지원하는 속성의 하위 집합만 클래스를 통해 직접 사용할 수 있습니다. 직접 지원되지 않는 추가 속성으로 생산자 또는 소비자를 구성하려면 다음 속성을 사용합니다.KafkaProperties
spring.kafka.properties.prop.one=first
spring.kafka.admin.properties.prop.two=second
spring.kafka.consumer.properties.prop.three=third
spring.kafka.producer.properties.prop.four=fourth
spring.kafka.streams.properties.prop.five=fifth
이렇게 하면 일반적인 Kafka 속성이 생산자, 소비자 및 관리자에게 적용됨), 관리자 속성이 소비자 속성에서 , 생산자 속성 및 스트림 속성을 로 설정합니다.prop.one
first
prop.two
second
prop.three
third
prop.four
fourth
prop.five
fifth
스프링 카프카를 다음과 같이 구성할 수도 있습니다.JsonDeserializer
spring.kafka.consumer.value-deserializer=org.springframework.kafka.support.serializer.JsonDeserializer
spring.kafka.consumer.properties.spring.json.value.default.type=com.example.Invoice
spring.kafka.consumer.properties.spring.json.trusted.packages=com.example,org.acme
마찬가지로 헤더에서 형식 정보를 보내는 기본 동작을 비활성화할 수 있습니다.JsonSerializer
spring.kafka.producer.value-serializer=org.springframework.kafka.support.serializer.JsonSerializer
spring.kafka.producer.properties.spring.json.add.type.headers=false
이러한 방식으로 설정된 속성은 스프링 부트이 명시적으로 지원하는 구성 항목을 재정의합니다. |
임베디드 카프카로 테스트
아파치 카프카의 스프링은 아파치 카프카 브로커와 함께 프로젝트를 테스트할 수 있는 편리한 방법을 제공합니다. 이 기능을 사용하려면 모듈에서 테스트 클래스에 인테고트 에 추가합니다. 자세한 내용은 아파치 카프카 레퍼런스 매뉴얼의스프링을 참조하십시오.@EmbeddedKafka
spring-kafka-test
앞서 언급한 아파치 카프카 브로커와 스프링 부트 자동 구성 작업을 수행하려면 아파치 카프카의 스프링 부트 구성 속성에 임베디드 브로커 주소(에 의해 채워진)에 대한 시스템 속성을 다시 매핑해야 합니다. 이렇게 하는 방법에는 여러 가지가 있습니다.EmbeddedKafkaBroker
- 임베디드 브로커 주소를 테스트 클래스에 매핑할 시스템 속성을 제공합니다.
spring.kafka.bootstrap-servers
static {
System.setProperty(EmbeddedKafkaBroker.BROKER_LIST_PROPERTY, "spring.kafka.bootstrap-servers");
}
- 이노션에서 속성 이름을 구성합니다.
@EmbeddedKafka
@EmbeddedKafka(topics = "someTopic",
bootstrapServersProperty = "spring.kafka.bootstrap-servers")
- 구성 속성에서 자리 표시자를 사용합니다.
spring.kafka.bootstrap-servers=${spring.embedded.kafka.brokers}
Spring Boot Reference DocumentationPhillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch, Andy Wilkinson, Marcel Overdijk, Christian Dupuis, Sébastien Deleuze, Michael Simons, Vedran Pavić, Jay Bryant, Madhura Bhave, Eddú Meléndez, Scott FrederickLegal2.3.1.RELEASE Copyright © 2012-2020 Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically. |
출처 : docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/htmlsingle/#boot-features-messaging