# Message queues

> **TL;DR**
> 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](auto-completing-code.html) and navigation for several JMS provider implementations:

* [Apache ActiveMQ](https://activemq.apache.org/)

* [Apache Kafka](https://kafka.apache.org/)

* [RabbitMQ](https://www.rabbitmq.com/)

When implementing the sender method, you can press `Ctrl+Space` (Windows), `⌃ Space` (macOS), `⌃ Space` (IntelliJ IDEA Classic (macOS)), `⌃ Space` (macOS System Shortcuts), `Ctrl+Space` (XWin), `Ctrl+Space` (GNOME), `Ctrl+Space` (KDE), `Alt+/` (Emacs), `Ctrl+Space` (Sublime Text), `⌃ Space` (Sublime Text (macOS)), `Ctrl+Space` (NetBeans), `Ctrl+Space` (Visual Studio), `⌃ Space` (Visual Studio (macOS)), `Ctrl+Space` (Eclipse), `⌃ Space` (Eclipse (macOS)) to complete available destinations and then hold `Ctrl` (Windows), `Ctrl` (macOS), `Ctrl` (IntelliJ IDEA Classic (macOS)), `Ctrl` (macOS System Shortcuts), `Ctrl` (XWin), `Ctrl` (GNOME), `Ctrl` (KDE), `Ctrl` (Emacs), `Ctrl` (Sublime Text), `Ctrl` (Sublime Text (macOS)), `Ctrl` (NetBeans), `Ctrl` (Visual Studio), `Ctrl` (Visual Studio (macOS)), `Ctrl` (Eclipse), `Ctrl` (Eclipse (macOS)) while clicking it to navigate to the relevant declaration.

![RabbitMQ exchange completion](https://resources.jetbrains.com.cn/help/img/idea/2026.2/rabbitmq-exchange.png)

Click ![The message queue receiver icon](https://resources.jetbrains.com.cn/help/img/idea/2026.2/product.icons.gutter.messageQueueReceiver.svg) 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.

![RabbitMQ receiver gutter icon](https://resources.jetbrains.com.cn/help/img/idea/2026.2/rabbitmq-receiver-gutter.png)

IntelliJ IDEA recognizes queue names as references and provides corresponding coding assistance including navigation and refactoring. If it's not the case, press `Alt+Enter` (Windows), `⌥ ⏎` (macOS), `⌥ ⏎` (IntelliJ IDEA Classic (macOS)), `⌥ ⏎` (macOS System Shortcuts), `Alt+Enter` (XWin), `Alt+Enter` (GNOME), `Alt+Enter` (KDE), `Alt+Enter` (Emacs), `Alt+Enter` (Sublime Text), `⌥ ⏎` (Sublime Text (macOS)), `Alt+Enter` (NetBeans), `Alt+Enter` (Visual Studio), `⌥ ⏎` (Visual Studio (macOS)), `Ctrl+1` (Eclipse), `⌘ 1` (Eclipse (macOS)) on a destination, select Inject language or reference, and select a message broker.

