quarkus: Startup error "SRMSG00019: Unable to connect an emitter with the channel"
Describe the bug
I’m having the same issue as #15058 which is the “SRMSG00019: Unable to connect an emitter with the channel” error on startup randomly.
Expected behavior
No error and no stacktrace.
Actual behavior
On Quarkus startup:
2021-06-10 16:22:41,101 INFO [org.qua.cor.JobRunShell] (QuarkusQuartzScheduler_Worker-1) Job io.quarkus.scheduler.Scheduler.stats-job threw a JobExecutionException: : org.quartz.JobExecutionException: java.lang.RuntimeException: Error injecting org.eclipse.microprofile.reactive.messaging.Emitter<com.example.dto.StatsMessage> com.example.service.StatsService.emitter [See nested exception: java.lang.RuntimeException: Error injecting org.eclipse.microprofile.reactive.messaging.Emitter<com.example.dto.StatsMessage> com.example.service.StatsService.emitter]
at io.quarkus.quartz.runtime.QuartzScheduler$InvokerJob.execute(QuartzScheduler.java:384)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: java.lang.RuntimeException: Error injecting org.eclipse.microprofile.reactive.messaging.Emitter<com.example.dto.StatsMessage> com.example.service.StatsService.emitter
at com.example.service.StatsService_Bean.create(StatsService_Bean.zig:310)
at com.example.service.StatsService_Bean.create(StatsService_Bean.zig:376)
at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:96)
at io.quarkus.arc.impl.AbstractSharedContext.access$000(AbstractSharedContext.java:14)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:29)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:26)
at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:26)
at io.quarkus.arc.impl.ComputingCache.computeIfAbsent(ComputingCache.java:69)
at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:26)
at io.quarkus.arc.impl.ClientProxies.getApplicationScopedDelegate(ClientProxies.java:17)
at com.example.service.StatsService_ClientProxy.arc$delegate(StatsService_ClientProxy.zig:67)
at com.example.service.StatsService_ClientProxy.computeStats(StatsService_ClientProxy.zig:124)
at com.example.service.StatsService_ScheduledInvoker_computeStats_f8dccc2d37c7825d22dfa702247d39d08afc55f5.invokeBean(StatsService_ScheduledInvoker_computeStats_f8dccc2d37c7825d22dfa702247d39d08afc55f5.zig:46)
at io.quarkus.arc.runtime.BeanInvoker.invoke(BeanInvoker.java:20)
at io.quarkus.quartz.runtime.QuartzScheduler$InvokerJob.execute(QuartzScheduler.java:382)
... 2 more
Caused by: javax.enterprise.inject.spi.DefinitionException: SRMSG00019: Unable to connect an emitter with the channel `stats-out`
at io.smallrye.reactive.messaging.extension.ChannelProducer.getEmitter(ChannelProducer.java:192)
at io.smallrye.reactive.messaging.extension.ChannelProducer.produceEmitter(ChannelProducer.java:137)
at io.smallrye.reactive.messaging.extension.ChannelProducer_ProducerMethod_produceEmitter_86c8bb1e4975aaf33dff96bec0d2fc8fa44920ab_Bean.create(ChannelProducer_ProducerMethod_produceEmitter_86c8bb1e4975aaf33dff96bec0d2fc8fa44920ab_Bean.zig:247)
at io.smallrye.reactive.messaging.extension.ChannelProducer_ProducerMethod_produceEmitter_86c8bb1e4975aaf33dff96bec0d2fc8fa44920ab_Bean.get(ChannelProducer_ProducerMethod_produceEmitter_86c8bb1e4975aaf33dff96bec0d2fc8fa44920ab_Bean.zig:277)
at io.smallrye.reactive.messaging.extension.ChannelProducer_ProducerMethod_produceEmitter_86c8bb1e4975aaf33dff96bec0d2fc8fa44920ab_Bean.get(ChannelProducer_ProducerMethod_produceEmitter_86c8bb1e4975aaf33dff96bec0d2fc8fa44920ab_Bean.zig:312)
at io.quarkus.arc.impl.CurrentInjectionPointProvider.get(CurrentInjectionPointProvider.java:52)
at com.example.service.StatsService_Bean.create(StatsService_Bean.zig:293)
... 16 more
To Reproduce
Reproduction project: reproduce-17841.zip
My emitter is described like this:
@ApplicationScoped
public class StatsService {
@Inject
@Channel("stats-out")
Emitter<StatsMessage> emitter;
@Transactional
@Scheduled(cron = "0/5 * * ? * *", identity = "stats-job")
public void computeStats() {
StatsMessage message = new StatsMessage();
message.date = LocalDateTime.now();
emitter.send(message);
}
}
Configuration
mp.messaging.outgoing.stats-out.connector=smallrye-kafka
mp.messaging.outgoing.stats-out.topic=stats
mp.messaging.outgoing.stats-out.value.serializer=io.quarkus.kafka.client.serialization.ObjectMapperSerializer
Environment (please complete the following information):
Output of java -version : Java 11
Quarkus version or git rev : 1.13.7
Build tool : Apache Maven 3.6.3
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Comments: 17 (12 by maintainers)
@cescoffier adding a few seconds of delay seems to work indeed.