카테고리 없음

EnableBinding 유형은 더 이상 사용되지 않으며 StreamListener 유형은 더 이상 사용되지 않습니다.

기록만이살길 2021. 2. 26. 13:19
반응형

EnableBinding 유형은 더 이상 사용되지 않으며 StreamListener 유형은 더 이상 사용되지 않습니다.

1. 질문(문제점):

저는 Spring Boot 버전 2.4.2를 사용하고 있으며 @InboundChannelAdapter.

import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.messaging.Source;
import org.springframework.integration.annotation.InboundChannelAdapter;

@EnableBinding(value = Source.class)
public class TransactionPublisher {
    
    @InboundChannelAdapter(channel = Source.OUTPUT)
    public String sendTransactionDetails() {
        return "{name:\"T1\", amount: \"1000\", transactionFor : \"Purchase\"}";
    }
}

RabbitmqReceiverApplication.java

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.cloud.stream.messaging.Sink;

@EnableBinding(value = Sink.class)
@SpringBootApplication
public class RabbitmqReceiverApplication {

    public static void main(String[] args) {
        SpringApplication.run(RabbitmqReceiverApplication.class, args);
    }

    @StreamListener(Sink.INPUT)
    public void log(String message) {
        System.out.println(message);
    }
}

대안은 무엇일까요? 위 코드를 리팩토링하는 방법은 무엇입니까? 무슨 일이 일어나고 무슨 일이 일어나고 있는지 이해하기 어려워지는 속도로 많은 일들이 일어나고 있습니까?

2. 해결방안:

설명서를 참조하십시오 .

예 : 소비자 측면에서 ...

@Bean
Consumer<String> log() {
    return str -> {
        System.out.println(str);
    };
}

바인딩 이름은 log-in-0입니다.

생산자 측에서는 Supplier<String>바인딩 이름을 가진 빈입니다 sendTransactionDetails-out-0.

65752826
반응형