Message queues
Required plugin: Jakarta EE: Messaging (JMS) (bundled)
For Spring: Spring Messaging (bundled)
A message queue provides asynchronous communication between your application components. This means that the sender and receiver of the message don't interact with each other directly and don't need to interact with the message queue at the same time.
The Java Message Service (JMS) framework is a messaging standard for Java application components. IntelliJ IDEA provides code completion and navigation for several JMS provider implementations:
When implementing the sender method, you can press CtrlSpace to complete available destinations and then hold Ctrl while clicking it to navigate to the relevant declaration.

Click in the gutter where you implemented the receiver (listener) method to list all usages of the corresponding destination and navigate to any one of them.

Press AltEnter on a destination to inject a reference for it.

Thanks for your feedback!