[英]Spring cloud function Cosuming rabbitmq queue - Dispatcher has no subscribers for channel
鑒於:
cloud:
stream:
rabbit:
bindings:
inboundApolloLookupVehicleChannel:
destination: fed.apollo-vehicle-lookup-test
group: apollo-mngt-group
consumer:
missingQueuesFatal: true
prefetch: 25
autoBindDlq: true
maxAttempts: 1
republishToDlq: true
requeueRejected: false
durableSubscription: true
maxConcurrency: 6
function:
definition: consume
和:
@SpringBootApplication
@EnableEurekaClient
@EnableBinding(LookupMessageChannel.class)
public class ApolloLookupServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ApolloLookupServiceApplication.class, args);
}
}
public interface LookupMessageChannel {
String INBOUND_LOOKUP_VEHICLE_CHANNEL = "inboundApolloLookupVehicleChannel";
@Input(INBOUND_LOOKUP_VEHICLE_CHANNEL)
SubscribableChannel inboundApolloLookupVehicleChannel();
}
@Service
@MessageEndpoint
@RequiredArgsConstructor
public class ApolloVehicleLookupService {
private final ApolloVehicleLookUpRepository apolloVehicleLookUpRepository;
private static final Logger LOGGER = LoggerFactory.getLogger(ApolloVehicleLookupService.class);
@Bean
public Consumer<Flux<ApolloVehicleLookUp>> consume() {
return stream -> stream
.flatMap(this.apolloVehicleLookUpRepository::save)
.subscribe(value -> {
LOGGER.info("stored value: " + value.toString());
});
}
}
聚甲醛:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
<relativePath />
<!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>14</java.version>
<spring-cloud.version>Hoxton.SR3</spring-cloud.version>
<os-maven-plugin.version>1.5.0.Final</os-maven-plugin.version>
<spotify-docker-maven.version>1.2.0</spotify-docker-maven.version>
<os.detected.classifier>linux-x86_64</os.detected.classifier>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-rsocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
為什么我會收到以下異常?
[payload=org.springframework.messaging.MessageDeliveryException: Dispatcher 沒有頻道“apollo-lookup-service-1.inboundApolloLookupVehicleChannel”的訂閱者。 ; 嵌套異常是 org.springframework.integration.MessageDispatchingException: Dispatcher 沒有訂閱者,failedMessage=GenericMessage [payload=byte[439]
我只是想使用該隊列中的消息。
任何幫助將不勝感激,謝謝。
異常簡單意味着您在LookupMessageChannel
中定義的頻道沒有訂閱者,為什么要這樣做,因為您沒有定義任何訂閱者。 在我看來,您正在嘗試使用功能方法,而 stream 應用程序的 rest 使用幾乎已棄用的舊配置。
不要誤會我的意思,但目前您的應用程序很少有問題,因此很難確定您到底想要做什么,所以。 . .
請考慮遵循此快速入門(頂部 5 分鍾)以使您進入正確的功能方法,然后隨時跟進其他問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.