I am new for event bus in Vert.x. In guidance https://vertx.io/docs/vertx-core/java/, it describes as following:
Best-effort delivery
Vert.x does its best to deliver messages and won’t consciously throw them away. This is called best-effort delivery.
If your application cares about lost messages, you should code your handlers to be idempotent, and your senders to retry after recovery.
My system doesn't expect to lose any messages, so I have to understand event bus and decide whether or not to use Vert.x. The following are my questions:
what is typical scenario to lose messages for event bus?
Suppose a scenario, producer is fast and consumer is slow. could producer perceive it and slow down sending? How to deal with this situation?
Suppose another scenario, consumer register for event bus, then for some reason consumer doesn't work, at this time, does producer sending return exception? Or producer doesn't know consumer status and continue to send? How to deal with this situation?
Is event loop thread responsible for delivering messages for event bus?
Does event bus have a queue to buffer messages? If yes, by default how big for size?