Reputation: 359
I am load testing a simple application developed in Quarkus. The application proxies http request to another http service. The application uses org.eclipse.microprofile.reactive.messaging.Emitter and org.eclipse.microprofile.reactive.messaging.Channel.
I am getting below error if I push the request rate to 300 req/sec. I am trying to understand error SRMSG00034: Insufficient downstream requests to emit item and how to solve it. Any help would be appreciated.
2021-03-10 06:43:47,678 ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (executor-thread-100) HTTP Request to /events failed, error id: cb6577a7-0cd6-4790-a5ea-5ccd73a088fc-289: java.lang.IllegalStateException: SRMSG00034: Insufficient downstream requests to emit item
at io.smallrye.reactive.messaging.extension.ThrowingEmitter.emit(ThrowingEmitter.java:60)
at io.smallrye.reactive.messaging.extension.AbstractEmitter.emit(AbstractEmitter.java:146)
at io.smallrye.reactive.messaging.extension.EmitterImpl.send(EmitterImpl.java:29)
Upvotes: 9
Views: 4615
Reputation: 3202
So, you are using an emitter to push messages somewhere. An emitter is an async structure that has a default buffer to handle slow consumption (see https://quarkus.io/blog/reactive-messaging-emitter/). In your case, the somewhere is not fast enough or the buffer is not large enough.
There are several approaches to work around the issue:
Upvotes: 11