Given:
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
and:
@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());
});
}
}
POM:
<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>
Why am I getting the following exception?
[payload=org.springframework.messaging.MessageDeliveryException: Dispatcher has no subscribers for channel 'apollo-lookup-service-1.inboundApolloLookupVehicleChannel'. ; nested exception is org.springframework.integration.MessageDispatchingException: Dispatcher has no subscribers, failedMessage=GenericMessage [payload=byte[439]
I've just wanted to consume messages from that queue.
Any help would be appreciated, thanks.
The exception simple means that your channel defined in LookupMessageChannel
has no subscribers and why should it since, you have not defined any. It also appears to me that you are attempting to use functional approach while the rest of your stream app uses legacy configurations that is all but deprecated.
Don't get me wrong but there are few things that are wrong with your app at the moment so it's hard to determine what exactly you are looking for to do, so. . .
Please consider following this quick start (5 min top) to get you into proper functional approach and then feel free to follow up with additional questions.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.