저는 현재 .NET과 같은 Google 클라우드 서비스에 대한 몇 가지 종속성이있는 스프링 부트 애플리케이션을 구현하고 PubSub
있습니다. 스프링 부트 자동 구성은 나를 위해 많은 빈을 생성합니다. 예를 들어 MessagingGateway
구현 및 PubSubTemplate
.
이제 다음과 같은 아티팩트가 있습니다.
@Service
public class MyServiceImpl implements MyService {
private final PubsubOutboundGateway messagingGateway;
public MyServiceImpl(PubsubOutboundGateway messagingGateway) {
this.messagingGateway = messagingGateway;
}
@Override
public void sendToPubSub(String s) {
messagingGateway.sendTest(s);
}
}
@MessagingGateway
@Component
public interface PubsubOutboundGateway {
@Gateway(requestChannel = "myChannel" )
void sendTest(String test);
}
@Configuration
public class Channels {
@Bean
@ServiceActivator(inputChannel = "myChannel")
public MessageHandler messageSender(PubSubTemplate pubsubTemplate) {
return new PubSubMessageHandler(pubsubTemplate, "my-topic");
}
}
로컬 개발을 위해 pubsub를 끄면 다음 오류가 발생합니다.
Consider defining a bean of type 'com.google.cloud.spring.pubsub.core.PubSubTemplate' in your configuration.
그러나 내가 정말로 원하는 것은 메시지를 인쇄하는 로컬 PubsubOutboundGateway입니다. 나는 추가하여이 작업을 수행 할 수 있습니다 @Profile("!local")
로 PubsubOutboundGateway
하고 Channels
과를 구현 PubsubOutboundGatewayLocalImpl
. 그러나 이것은 해킹처럼 보입니다.
활성 GCP 키 등을 설정하지 않고 로컬 개발을 수행하려면 어떻게해야합니까? 아니면 개발을 방해하고 활성 키를 사용해야합니까?