---
title: Charmhub | Deploy Rabbitmq K8S using Charmhub - The Open Operator Collection
description: Deploy the latest version of Rabbitmq K8S as a Kubernetes Operator on
  any cloud.
url: https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq
---

# Rabbitmq K8S

[OpenStack Charmers](https://charmhub.io/publisher/openstack-charmers "View all packages from OpenStack Charmers")

* [OpenStack Charmers](https://charmhub.io/publisher/openstack-charmers "View all packages from OpenStack Charmers")

Platform:

3.12/stable 72

```
juju deploy rabbitmq-k8s --channel 3.12/stable
```

[Learn to deploy on juju >](https://juju.is/docs/juju/manage-applications)

[Toggle side navigation](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#drawer)

## charms.rabbitmq\_k8s.v0.rabbitmq

* [*Docstrings*Docstrings](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq)
  [*Code*Source code](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq/source-code)
* + Download

    Fetch library

    ```
    charmcraft fetch-lib charms.rabbitmq_k8s.v0.rabbitmq
    ```

    [Download rabbitmq.py](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq/download)
  + *Last updated* 10 Jun 2026
  + *Revision* Library version 0.3

RabbitMQProvides and Requires module.

This library contains the Requires and Provides classes for handling
the rabbitmq interface.

Import `RabbitMQRequires` in your charm, with the charm object and the
relation name:
- self
- "amqp"

Also provide two additional parameters to the charm object:
- username
- vhost
- external\_connectivity: Optional, default False

Two events are also available to respond to:
- connected
- ready
- goneaway

A basic example showing the usage of this relation follows:

```
from charms.rabbitmq_k8s.v0.rabbitmq import RabbitMQRequires

class RabbitMQClientCharm(CharmBase):
    def __init__(self, *args):
        super().__init__(*args)
        # RabbitMQ Requires
        self.amqp = RabbitMQRequires(
            self, "amqp",
            username="myusername",
            vhost="vhostname"
        )
        self.framework.observe(
            self.amqp.on.connected, self._on_amqp_connected)
        self.framework.observe(
            self.amqp.on.ready, self._on_amqp_ready)
        self.framework.observe(
            self.amqp.on.goneaway, self._on_amqp_goneaway)

    def _on_amqp_connected(self, event):
        '''React to the RabbitMQ connected event.

        This event happens when n RabbitMQ relation is added to the
        model before credentials etc have been provided.
        '''
        # Do something before the relation is complete
        pass

    def _on_amqp_ready(self, event):
        '''React to the RabbitMQ ready event.

        The RabbitMQ interface will use the provided username and vhost for the
        request to the rabbitmq server.
        '''
        # RabbitMQ Relation is ready. Do something with the completed relation.
        pass

    def _on_amqp_goneaway(self, event):
        '''React to the RabbitMQ goneaway event.

        This event happens when an RabbitMQ relation is removed.
        '''
        # RabbitMQ Relation has goneaway. shutdown services or suchlike
        pass
```

---

Index

* [class RabbitMQConnectedEvent](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#rabbitmqconnectedevent)
* [class RabbitMQReadyEvent](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#rabbitmqreadyevent)
* [class RabbitMQGoneAwayEvent](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#rabbitmqgoneawayevent)
* [class RabbitMQServerEvents](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#rabbitmqserverevents)
* [class RabbitMQRequires](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#rabbitmqrequires)
* + [def \_\_init\_\_(
    self,
    charm,
    relation\_name,
    username,
    vhost,
    external\_connectivity)](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#rabbitmqrequires-__init__)
* + [def password(
    self)](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#rabbitmqrequires-password)
* + [def hostname(
    self)](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#rabbitmqrequires-hostname)
* + [def ssl\_port(
    self)](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#rabbitmqrequires-ssl_port)
* + [def ssl\_ca(
    self)](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#rabbitmqrequires-ssl_ca)
* + [def hostnames(
    self)](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#rabbitmqrequires-hostnames)
* + [def request\_access(
    self,
    username,
    vhost,
    external\_connectivity)](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#rabbitmqrequires-request_access)
* [class HasRabbitMQClientsEvent](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#hasrabbitmqclientsevent)
* [class ReadyRabbitMQClientsEvent](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#readyrabbitmqclientsevent)
* [class GoneAwayRabbitMQClientsEvent](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#goneawayrabbitmqclientsevent)
* [class RabbitMQClientEvents](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#rabbitmqclientevents)
* [class RabbitMQProvides](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#rabbitmqprovides)
* + [def \_\_init\_\_(
    self,
    charm,
    relation\_name,
    callback)](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#rabbitmqprovides-__init__)
* + [def username(
    self,
    relation)](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#rabbitmqprovides-username)
* + [def vhost(
    self,
    relation)](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#rabbitmqprovides-vhost)
* + [def external\_connectivity(
    self,
    relation)](https://charmhub.io/rabbitmq-k8s/libraries/rabbitmq#rabbitmqprovides-external_connectivity)

#### class RabbitMQConnectedEvent

Description

RabbitMQ connected Event. None

#### class RabbitMQReadyEvent

Description

RabbitMQ ready for use Event. None

#### class RabbitMQGoneAwayEvent

Description

RabbitMQ relation has gone-away Event. None

#### class RabbitMQServerEvents

Description

Events class for `on`. None

#### class RabbitMQRequires

Description

RabbitMQRequires class. None

Methods

RabbitMQRequires.
\_\_init\_\_(

*self*

,
charm

,
relation\_name: str

,
username: str

,
vhost: str

,
external\_connectivity: bool
)

RabbitMQRequires.
password(

*self*
)

Description

Return the RabbitMQ password from the server side of the relation. None

RabbitMQRequires.
hostname(

*self*
)

Description

Return the hostname from the RabbitMQ relation. None

RabbitMQRequires.
ssl\_port(

*self*
)

Description

Return the SSL port from the RabbitMQ relation. None

RabbitMQRequires.
ssl\_ca(

*self*
)

Description

Return the SSL port from the RabbitMQ relation. None

RabbitMQRequires.
hostnames(

*self*
)

Description

Return a list of remote RMQ hosts from the RabbitMQ relation. None

RabbitMQRequires.
request\_access(

*self*

,
username: str

,
vhost: str

,
external\_connectivity: bool
)

Description

Request access to the RabbitMQ server. None

#### class HasRabbitMQClientsEvent

Description

Has RabbitMQClients Event. None

#### class ReadyRabbitMQClientsEvent

Description

RabbitMQClients Ready Event. None

#### class GoneAwayRabbitMQClientsEvent

Description

RabbitMQClients GoneAway Event. None

#### class RabbitMQClientEvents

Description

Events class for `on`. None

#### class RabbitMQProvides

Description

RabbitMQProvides class. None

Methods

RabbitMQProvides.
\_\_init\_\_(

*self*

,
charm

,
relation\_name: str

,
callback
)

RabbitMQProvides.
username(

*self*

,
relation
)

Description

Return the RabbitMQ username from the client side of the relation. None

RabbitMQProvides.
vhost(

*self*

,
relation
)

Description

Return the RabbitMQ vhost from the client side of the relation. None

RabbitMQProvides.
external\_connectivity(

*self*

,
relation
)

Description

Return the RabbitMQ external\_connectivity from the client side of the relation. None
