본문 바로가기

IT/SpringBoot

스프링 부트 #4.14. 메시징

반응형

4.14. 메시징

Spring Framework는 JMS API를 간소화된 사용부터 전체 인프라에 이르기까지 메시징 시스템과 통합하여 비동기적으로 메시지를 수신하는 광범위한 지원을 제공합니다. Spring AMQP는 고급 메시지 큐어링 프로토콜에 대해 유사한 기능 세트를 제공합니다. 스프링 부트은 또한 토끼MQ에 대한 자동 구성 옵션을 제공합니다. Spring WebSocket에는 기본적으로 STOMP 메시징에 대한 지원이 포함되어 있으며 스프링 부트은 스타터와 소량의 자동 구성을 통해 이를 지원합니다. 스프링 부트는 아파치 카프카를 지원합니다.JmsTemplateRabbitTemplate

4.14.1. JMS

인터페이스는 JMS 브로커와 상호 작용하기 위한 표준 방법을 제공합니다. Spring은 JMS로 작업할 필요가 있지만 일반적으로 직접 사용할 필요가 없으며 대신 더 높은 수준의 메시징 추상화에 의존할 수 있습니다. (자세한 내용은 스프링 프레임워크 참조 설명서의 관련 섹션을 참조하십시오.) 또한 Spring Boot는 메시지를 보내고 받는 데 필요한 인프라를 자동으로 구성합니다.javax.jms.ConnectionFactoryjavax.jms.ConnectionConnectionFactory

액티브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

기본적으로 기본 은 다음과 같은 외부 구성 속성으로 제어 할 수있는 합리적인 설정으로 네이티브를 래핑합니다.CachingConnectionFactoryConnectionFactoryspring.jms.*

spring.jms.cache.session-cache-size=5

네이티브 풀링을 사용하는 경우 다음 예제와 같이 종속성을 추가하고 그에 따라 구성하여 이렇게 할 수 있습니다.org.messaginghub:pooled-jmsJmsPoolConnectionFactory

spring.activemq.pool.enabled=true
spring.activemq.pool.max-connections=50
  지원되는 옵션에 대한 자세한 내용은 ActiveMQProperties를 참조하십시오. 고급 사용자 지정을 위해 구현하는 임의의 원두 수를 등록할 수도 있습니다. ActiveMQConnectionFactoryCustomizer

기본적으로 ActiveMQ는 아직 존재하지 않는 경우 대상을 만들어 제공된 이름에 대해 대상을 해결합니다.

아르테미스 지원

스프링 부트은 클래스 경로에서 Artemis를 사용할 수 있음을 감지할 때 자동으로 구성할 수 있습니다. 브로커가 있는 경우 포함된 브로커가 자동으로 시작되고 구성됩니다(모드 속성이 명시적으로 설정되지 않는 한). 지원되는 모드는 임베디드 브로커가 필요하며 클래스패스에서 브로커를 사용할 수 없는 경우 오류가 발생해야 하며(전송 프로토콜을 사용하여 브로커에 연결)입니다. 후자를 구성하면 스프링 부트은 로컬 컴퓨터에서 실행 중인 브로커에 기본 설정을 연결하는 것을 구성합니다.ConnectionFactoryembeddednativenettyConnectionFactory

  사용하는 경우 기존 Artemis 인스턴스에 연결하는 데 필요한 종속성과 JMS와 통합하는 스프링 인프라가 제공됩니다. 응용 프로그램에 추가하면 임베디드 모드를 사용할 수 있습니다. spring-boot-starter-artemisorg.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.JMSQueueConfigurationorg.apache.activemq.artemis.jms.server.config.TopicConfiguration

기본적으로 기본 은 다음과 같은 외부 구성 속성으로 제어 할 수있는 합리적인 설정으로 네이티브를 래핑합니다.CachingConnectionFactoryConnectionFactoryspring.jms.*

spring.jms.cache.session-cache-size=5

네이티브 풀링을 사용하는 경우 다음 예제와 같이 종속성을 추가하고 그에 따라 구성하여 이렇게 할 수 있습니다.org.messaginghub:pooled-jmsJmsPoolConnectionFactory

spring.artemis.pool.enabled=true
spring.artemis.pool.max-connections=50

더 지원되는 옵션은 ArtemisProperties를 참조하십시오.

JNDI 조회가 관련되지 않으며 Artemis 구성의 특성 또는 구성을 통해 제공된 이름을 사용하여 대상은 이름에 대해 해결됩니다.name

JNDI 연결 팩토리 사용

응용 프로그램 서버에서 응용 프로그램을 실행하는 경우 Spring 부트은 JNDI를 사용하여 JMS를 찾으려고 합니다. 기본적으로 위치와 위치가 선택됩니다. 다음 예제와 같이 대체 위치를 지정해야 하는 경우 속성을 사용할 수 있습니다.ConnectionFactoryjava:/JmsXAjava:/XAConnectionFactoryspring.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메시징템플릿은 유사한 방식으로 주입될 수 있습니다. 또는 콩이 정의된 경우 자동으로 구성된 에 자동으로 연결됩니다. DestinationResolverMessageConverterJmsTemplate
메시지 수신

JMS 인프라가 있는 경우 모든 빈에 추가하여 리스너 끝점을 만들 수 있습니다. 정의되지 않은 경우 기본 값은 자동으로 구성됩니다. 또는 원두가 정의된 경우 기본 팩터리와 자동으로 연결됩니다.@JmsListenerJmsListenerContainerFactoryDestinationResolverMessageConverter

기본적으로 기본 팩터리는 트랜잭션입니다. a가 있는 인프라에서 실행하는 경우 기본적으로 리스너 컨테이너에 연결됩니다. 그렇지 않은 경우 플래그가 활성화됩니다. 후자의 시나리오에서는 로컬 데이터 저장소 트랜잭션을 수신 자 방법(또는 그 대리인)에 추가하여 들어오는 메시지 처리에 연결할 수 있습니다. 이렇게 하면 로컬 트랜잭션이 완료되면 들어오는 메시지가 인정됩니다. 여기에는 동일한 JMS 세션에서 수행된 응답 메시지 보내기도 포함됩니다.JtaTransactionManagersessionTransacted@Transactional

다음 구성 요소는 대상에서 수신기 끝점을 만듭니다.someQueue

@Component
public class MyBean {

    @JmsListener(destination = "someQueue")
    public void processMessage(String content) {
        // ...
    }

}
  자세한 내용은 @EnableJms 자바독을 참조하십시오.

더 많은 인스턴스를 만들어야 하거나 기본값을 재정의하려는 경우 Spring Boot는 자동으로 구성된 인스턴스와 동일한 설정을 사용하여 초기화하는 데 사용할 수 있는 인스턴스를 제공합니다.JmsListenerContainerFactoryDefaultJmsListenerContainerFactoryConfigurerDefaultJmsListenerContainerFactory

예를 들어 다음 예제에서는 특정 한 다음을 사용하는 다른 팩터리가 노출됩니다.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 지원이 자동으로 활성화됩니다. hostportamqps

컨텍스트에 bean이 있으면 자동으로 자동으로 구성된 에서 만든 연결의 이름을 지정하는 데 사용됩니다. 지원되는 옵션에 대한 자세한 내용은 RabbitProperties를 참조하십시오.ConnectionNameStrategyConnectionFactory

  자세한 내용은 RabbitMQ에서 사용하는 프로토콜인 AMQP 이해를 참조하십시오.
메시지 보내기

스프링은 자동 구성되며 다음 예제와 같이 직접 콩에 자동 연결할 수 있습니다.AmqpTemplateAmqpAdmin

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;
    }

    // ...

}
  토끼 메시징 템플릿은 유사한 방식으로 주입 될 수있다. 콩이 정의되면 자동으로 구성된 에 자동으로 연결됩니다. MessageConverterAmqpTemplate

필요한 경우 bean으로 정의된 모든 것이 RabbitMQ 인스턴스에서 해당 큐를 선언하는 데 자동으로 사용됩니다.org.springframework.amqp.core.Queue

작업을 다시 시도하려면 브로커 연결이 손실된 경우와 같은 재시도를 활성화할 수 있습니다.AmqpTemplate

spring.rabbitmq.template.retry.enabled=true
spring.rabbitmq.template.retry.initial-interval=2s

재시도는 기본적으로 비활성화됩니다. 콩을 선언하여 프로그래밍 방식으로 사용자 지정할 수도 있습니다.RetryTemplateRabbitRetryTemplateCustomizer

인스턴스를 더 많이 만들어야 하거나 기본값을 재정의하려는 경우 Spring Boot는 자동 구성에서 사용하는 공장과 동일한 설정을 초기화하는 데 사용할 수 있는 빈을 제공합니다.RabbitTemplateRabbitTemplateConfigurerRabbitTemplate

메시지 수신

토끼 인프라가 있으면 모든 콩에 추가하여 리스너 끝점을 만들 수 있습니다. 정의되지 않은 경우 기본값이 자동으로 구성되고 속성을 사용하여 직접 컨테이너로 전환할 수 있습니다. 또는 콩이 정의된 경우 기본 팩터리와 자동으로 연결됩니다.@RabbitListenerRabbitListenerContainerFactorySimpleRabbitListenerContainerFactoryspring.rabbitmq.listener.typeMessageConverterMessageRecoverer

다음 샘플 구성 요소는 큐에 리스너 끝점을 만듭니다.someQueue

@Component
public class MyBean {

    @RabbitListener(queues = "someQueue")
    public void processMessage(String content) {
        // ...
    }

}
  자세한 내용은 @EnableRabbit 자바독을 참조하십시오.

더 많은 인스턴스를 만들어야 하거나 기본값을 재정의하려는 경우 Spring Boot는 자동 구성에서 사용하는 팩터리와 동일한 설정을 사용하여 a 및 a를 초기화하는 데 사용할 수 있는 a를 제공합니다.RabbitListenerContainerFactorySimpleRabbitListenerContainerFactoryConfigurerDirectRabbitListenerContainerFactoryConfigurerSimpleRabbitListenerContainerFactoryDirectRabbitListenerContainerFactory

  선택한 컨테이너 유형은 중요하지 않습니다. 이 두 개의 콩은 자동 구성에 의해 노출됩니다.

예를 들어 다음 구성 클래스는 특정 을 사용하는 다른 팩터리에서 노출됩니다.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하는 상황을 처리할 수 있습니다. 기본적으로 사용되지만 사용자 고유의 정의할 수 있습니다. 재시도가 소진되면 브로커가 그렇게 하도록 구성된 경우 메시지가 거부되고 삭제되거나 데드 레터 교환으로 라우팅됩니다. 기본적으로 재시도사용할 수 없습니다. 콩을 선언하여 프로그래밍 방식으로 사용자 지정할 수도 있습니다.RejectAndDontRequeueRecovererMessageRecovererRetryTemplateRabbitRetryTemplateCustomizer

  기본적으로 재시도가 비활성화되고 수신기가 예외를 throw하면 배달이 무기한 다시 시도됩니다. 이 동작은 두 가지 방법으로 이 동작을 수정할 수 있습니다: 속성을 제로 다시 배달을 시도하도록 설정하거나 메시지를 거부해야 한다는 신호를 던집니다. 후자는 재시도를 사용하도록 설정하고 배달 시도의 최대 수에 도달 할 때 사용되는 메커니즘입니다. defaultRequeueRejectedfalseAmqpRejectAndDontRequeueException

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-prefixKafkaTransactionManagerRecordMessageConverterKafkaTemplate
메시지 수신

아파치 카프카 인프라가 있는 경우 모든 콩에 추가하여 리스너 엔드포인트를 만들 수 있습니다. 정의되지 않은 경우 기본 값은 에 정의된 키로 자동으로 구성됩니다.@KafkaListenerKafkaListenerContainerFactoryspring.kafka.listener.*

다음 구성 요소는 주제에 대한 수신기 끝점을 만듭니다.someTopic

@Component
public class MyBean {

    @KafkaListener(topics = "someTopic")
    public void processMessage(String content) {
        // ...
    }

}

콩이 정의되면 컨테이너 공장에 자동으로 연결됩니다. 마찬가지로, 또는 콩이 정의된 경우 기본 팩터리에 자동으로 연결됩니다.KafkaTransactionManagerErrorHandlerAfterRollbackProcessorConsumerAwareRebalanceListener

수신기 유형에 따라 또는 콩이 기본 팩터리에 연결됩니다. 일괄 처리 수신기에 콩만 있으면 .RecordMessageConverterBatchMessageConverterRecordMessageConverterBatchMessageConverter

  일반적으로 자동 구성된 콩을 참조할 때 사용자 지정을 표시해야 합니다. ChainedKafkaTransactionManager@PrimaryKafkaTransactionManager
카프카 스트림

아파치 카프카의 스프링은 공장 콩을 제공하여 물체를 만들고 개울의 수명 주기를 관리합니다. 스프링 부트은 클래스패스에 있는 한 필요한 콩을 자동 구성하고, 카프카 스트림은 이노션을 통해 활성화된다.StreamsBuilderKafkaStreamsConfigurationkafka-streams@EnableKafkaStreams

Kafka Stream을 사용하도록 설정하면 응용 프로그램 ID와 부트스트랩 서버를 설정해야 합니다. 전자는 설정하지 않을 경우 기본값으로 구성할 수 있습니다. 후자는 전 세계적으로 설정하거나 스트림에 대해 특별히 재정의할 수 있습니다.spring.kafka.streams.application-idspring.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;
    }

}

기본적으로 개체가 만드는 개체에 의해 관리되는 스트림이 자동으로 시작됩니다. 속성을 사용하여 이 동작을 사용자 지정할 수 있습니다.StreamBuilderspring.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.onefirstprop.twosecondprop.threethirdprop.fourfourthprop.fivefifth

스프링 카프카를 다음과 같이 구성할 수도 있습니다.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
  이러한 방식으로 설정된 속성은 스프링 부트이 명시적으로 지원하는 구성 항목을 재정의합니다.
임베디드 카프카로 테스트

아파치 카프카의 스프링은 아파치 카프카 브로커와 함께 프로젝트를 테스트할 수 있는 편리한 방법을 제공합니다. 이 기능을 사용하려면 모듈에서 테스트 클래스에 인테고트 에 추가합니다. 자세한 내용은 아파치 카프카 레퍼런스 매뉴얼의스프링을 참조하십시오.@EmbeddedKafkaspring-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 Documentation

Phillip 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 Frederick

2.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

반응형