Skip to content

Commit b1af4c2

Browse files
Merge pull request #2730 from madeline-underwood/rabbit3
Rabbit3_next_iteration
2 parents 25bfecd + 32fb3b5 commit b1af4c2

8 files changed

Lines changed: 57 additions & 28 deletions

File tree

content/learning-paths/servers-and-cloud-computing/rabbitmq-gcp/_index.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,13 @@ prerequisites:
1515
- A [Google Cloud Platform (GCP)](https://cloud.google.com/free) account with billing enabled
1616
- Basic understanding of message queues and messaging concepts (publishers, consumers)
1717
- Familiarity with Linux command-line operations
18+
- Basic knowledge of Python for the use case examples
1819

1920
author: Pareena Verma
2021

2122
##### Tags
2223
skilllevels: Introductory
23-
subjects: Databases
24+
subjects: Containers and Virtualization
2425
cloud_service_providers: Google Cloud
2526

2627
armips:

content/learning-paths/servers-and-cloud-computing/rabbitmq-gcp/background.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Get started with RabbitMQ on Google Axion C4A
2+
title: Learn about RabbitMQ and Google Axion C4A
33

44
weight: 2
55

@@ -22,4 +22,4 @@ RabbitMQ helps decouple application components, improve scalability, and increas
2222

2323
RabbitMQ is widely used for **event-driven architectures**, **background job processing**, **microservices communication**, and **notification systems**. It integrates easily with many programming languages and platforms.
2424

25-
Learn more from the [RabbitMQ official website](https://www.rabbitmq.com/) and the [official documentation](https://www.rabbitmq.com/documentation.html).
25+
Learn more from the [RabbitMQ website](https://www.rabbitmq.com/) and the [RabbitMQ documentation](https://www.rabbitmq.com/documentation.html).

content/learning-paths/servers-and-cloud-computing/rabbitmq-gcp/baseline.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
---
2-
title: RabbitMQ Baseline Testing on Google Axion C4A Arm Virtual Machine
2+
title: Validate RabbitMQ installation
33
weight: 6
44

55
### FIXED, DO NOT MODIFY
66
layout: learningpathall
77
---
88

99
## RabbitMQ baseline validation on GCP SUSE Arm64 VM
10-
This document defines a **baseline validation procedure** for RabbitMQ installed on a **Google Cloud SUSE Linux Arm64 virtual machine**.
11-
The purpose of this baseline is to confirm:
10+
This section validates your RabbitMQ installation on the Google Cloud SUSE Linux Arm64 virtual machine by confirming:
1211

1312
- RabbitMQ service health
1413
- Management plugin availability

content/learning-paths/servers-and-cloud-computing/rabbitmq-gcp/firewall_setup.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Create a Firewall Rule on GCP
2+
title: Create a firewall rule on GCP
33
weight: 3
44

55
### FIXED, DO NOT MODIFY
@@ -8,7 +8,7 @@ layout: learningpathall
88

99
## Overview
1010

11-
In this section, you create a Firewall Rule within Google Cloud Console to expose TCP port 15672.
11+
In this section, you create a firewall rule within Google Cloud Console to expose TCP port 15672.
1212

1313
{{% notice Note %}}
1414
For support on GCP setup, see the Learning Path [Getting started with Google Cloud Platform](/learning-paths/servers-and-cloud-computing/csp/google/).
@@ -20,18 +20,18 @@ To expose TCP port 15672, create a firewall rule.
2020

2121
Navigate to the [Google Cloud Console](https://console.cloud.google.com/), go to **VPC Network > Firewall**, and select **Create firewall rule**.
2222

23-
![Screenshot of Google Cloud Console VPC Network Firewall page with Create firewall rule button highlighted alt-txt#center](images/firewall-rule.png "Create a firewall rule")
23+
![Screenshot showing the VPC Network Firewall page in Google Cloud Console with the Create firewall rule button highlighted alt-txt#center](images/firewall-rule.png "Create a firewall rule")
2424

2525
Next, create the firewall rule that exposes TCP port 15672.
2626
Set the **Name** of the new rule to "allow-tcp-15672". Select your network that you intend to bind to your VM (default is "autoscaling-net" but your organization might have others).
2727

2828
Set **Direction of traffic** to "Ingress". Set **Allow on match** to "Allow" and **Targets** to "Specified target tags". Enter "allow-tcp-15672" in the **Target tags** text field. Set **Source IPv4 ranges** to your IP address so that only you can access the application.
2929

30-
![Screenshot of firewall rule configuration showing TCP port 15672 settings with allow-tcp-15672 as target tag alt-txt#center](images/network-rule.png "Creating the TCP/15672 firewall rule")
30+
![Screenshot showing the firewall rule configuration interface with target tag set to allow-tcp-15672 and TCP port 15672 specified in the protocols and ports section alt-txt#center](images/network-rule.png "Creating the TCP/15672 firewall rule")
3131

3232
Finally, select **Specified protocols and ports** under the **Protocols and ports** section. Select the **TCP** checkbox, enter "15672" in the **Ports** text field, and select **Create**.
3333

34-
![Specifying the TCP port to expose alt-txt#center](images/network-port.png "Specifying the TCP port to expose")
34+
![Screenshot showing the Protocols and ports section with TCP checkbox selected and port 15672 entered in the ports field alt-txt#center](images/network-port.png "Specifying the TCP port to expose")
3535

3636
## What you've accomplished and what's next
3737

content/learning-paths/servers-and-cloud-computing/rabbitmq-gcp/installation.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ layout: learningpathall
77
---
88

99
## Install RabbitMQ on GCP SUSE Arm64 VM
10-
This guide describes a **step-by-step installation of RabbitMQ** on a **Google Cloud Platform SUSE Linux Arm64 virtual machine**, using **RPM packages** for both **Erlang** and **RabbitMQ Server**.
10+
This guide describes the installation of RabbitMQ on a Google Cloud Platform SUSE Linux Arm64 virtual machine using RPM packages for both Erlang and RabbitMQ Server.
1111

1212
RabbitMQ needs Erlang to be installed before setting up the server.
1313

@@ -19,14 +19,14 @@ RabbitMQ needs Erlang to be installed before setting up the server.
1919
- Outbound internet access
2020

2121
### Refresh system repositories
22-
This step updates the systems package list so the operating system knows about the latest software available from its repositories.
22+
Update the system's package list to get the latest available software from repositories.
2323

2424
```console
2525
sudo zypper refresh
2626
```
2727

2828
### Install required system utilities
29-
You can install the basic tools needed to download and manage packages.
29+
Install the basic tools needed to download and manage packages.
3030

3131
```console
3232
sudo zypper install -y curl wget gnupg tar socat logrotate
@@ -123,6 +123,10 @@ sudo rabbitmqctl set_user_tags admin administrator
123123
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
124124
```
125125

126+
{{% notice Warning %}}
127+
Replace `StrongPassword123` with a strong, unique password. For production environments, use environment variables or a secrets management system instead of hardcoding passwords.
128+
{{% /notice %}}
129+
126130
**Log in to Management UI**
127131

128132
Now, test it from outside the VM. Open a web browser on your local machine (Chrome, Firefox, Edge, etc.) and enter the following URL and credentials in the address bar:
@@ -135,7 +139,7 @@ Replace `<VM_IP>` with the public IP of your GCP VM.
135139

136140
If everything is configured correctly, you see a RabbitMQ login page in your browser that looks like this:
137141

138-
![Screenshot of RabbitMQ management UI login page showing username and password fields alt-txt#center](images/rabbitmq.png "RabbitMQ Login page")
142+
![Screenshot showing the RabbitMQ management UI login interface with username and password input fields and a login button alt-txt#center](images/rabbitmq.png "RabbitMQ Login page")
139143

140144
This confirms that your RabbitMQ management dashboard is operational.
141145

content/learning-paths/servers-and-cloud-computing/rabbitmq-gcp/instance.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,21 @@ To create a virtual machine based on the C4A instance type, navigate to the [Goo
2020

2121
Under **Machine configuration**, populate fields such as **Instance name**, **Region**, and **Zone**. Set **Series** to `C4A` and select `c4a-standard-4` for machine type.
2222

23-
![Screenshot of Google Cloud Console machine configuration page showing C4A series selected with c4a-standard-4 machine type alt-txt#center](images/gcp-vm.png "Creating a Google Axion C4A Arm virtual machine in Google Cloud Console")
23+
![Screenshot showing the machine configuration interface in Google Cloud Console with C4A series selected and c4a-standard-4 machine type highlighted, displaying 4 vCPUs and 16 GB memory specifications alt-txt#center](images/gcp-vm.png "Creating a Google Axion C4A Arm virtual machine in Google Cloud Console")
2424

2525
Under **OS and Storage**, select **Change**, then choose an Arm64-based OS image. For this Learning Path, use **SUSE Linux Enterprise Server**. Select "Pay As You Go" for the license type and press **Select**.
2626

2727
Under **Networking**, enable **Allow HTTP traffic** and add "allow-tcp-15672" as a network tag in the **Network tags** text field.
2828

29-
![Screenshot of Google Cloud Console network configuration showing allow-tcp-15672 network tag field alt-txt#center](images/network-config.png "Adding the TCP/15672 firewall rule to the VM")
29+
![Screenshot showing the Networking section of the VM configuration with allow-tcp-15672 entered in the Network tags field alt-txt#center](images/network-config.png "Adding the TCP/15672 firewall rule to the VM")
3030

3131
Select **Create** to launch the instance. Once created, you see an **SSH** option and the public IP address for your VM in the list of VM instances. Save the public IP address as you need it in the next step. Select the **SSH** option to launch an SSH shell into your VM instance.
3232

33-
![Screenshot of Google Cloud Console VM instances list showing SSH button and external IP address column alt-txt#center](images/gcp-pubip-ssh.png "Invoke an SSH session into your running VM instance")
33+
![Screenshot showing the VM instances list with columns for name, zone, machine type, internal IP, external IP, and an SSH button for each instance alt-txt#center](images/gcp-pubip-ssh.png "Invoke an SSH session into your running VM instance")
3434

3535
A window opens from your browser and you see a shell into your VM instance.
3636

37-
![Screenshot of browser-based SSH terminal window connected to Google Cloud VM instance alt-txt#center](images/gcp-shell.png "Terminal shell in your VM instance")
37+
![Screenshot showing a browser-based terminal window with a command prompt connected to the Google Cloud VM via SSH alt-txt#center](images/gcp-shell.png "Terminal shell in your VM instance")
3838

3939
## What you've accomplished and what's next
4040

content/learning-paths/servers-and-cloud-computing/rabbitmq-gcp/use-case1.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ layout: learningpathall
88

99
## Event processing with topic-based routing
1010

11-
In this use case, you implement an event-driven workflow using RabbitMQ with a **topic exchange**, a durable queue, and a Python worker consumer. You publish order events (for example, `order.created`, `order.updated`) and process them asynchronously.
11+
In this use case, you implement an event-driven workflow using RabbitMQ with a topic exchange, a durable queue, and a Python worker consumer. You publish order events (for example, `order.created`, `order.updated`) and process them asynchronously.
1212

13-
This pattern is useful when you need **flexible, wildcard-based routing** (such as `order.*`) where multiple event types route to the same queue and you want producers and consumers to evolve independently.
13+
This pattern is useful when you need flexible, wildcard-based routing (such as `order.*`) where multiple event types route to the same queue and producers and consumers evolve independently.
1414

1515
### Use case overview
1616

1717
**Scenario:**
1818
An application publishes order-related events (`order.created`, `order.updated`, etc.) to RabbitMQ. A background worker consumes these events from a queue and processes them independently.
1919

20-
The goal of this use case is to showcase how order-related events can be published to RabbitMQ and processed asynchronously by background workers without tightly coupling producers and consumers.
20+
This use case shows how order-related events can be published to RabbitMQ and processed asynchronously by background workers without tightly coupling producers and consumers.
2121

2222
**Typical events include:**
2323

@@ -45,7 +45,7 @@ Create a durable topic exchange to route events based on routing keys:
4545

4646
This creates a durable topic exchange named `events` that routes messages using wildcard-based routing keys (for example, `order.*`) and survives broker restarts.
4747

48-
The output is similar to:
48+
You should see:
4949
```output
5050
exchange declared
5151
```
@@ -60,7 +60,7 @@ Create a durable queue to store order-related events.
6060

6161
This creates a durable queue for order events that guarantees messages are persisted until consumed, ensuring reliability in case of worker or broker restarts.
6262

63-
The output is similar to:
63+
You should see:
6464
```output
6565
queue declared
6666
```

content/learning-paths/servers-and-cloud-computing/rabbitmq-gcp/use-case2.md

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: "RabbitMQ use case 2: WhatsApp Notification"
2+
title: "RabbitMQ use case 2: WhatsApp notification"
33
weight: 8
44

55
### FIXED, DO NOT MODIFY
@@ -44,7 +44,7 @@ Create the required exchange, queue, and binding for WhatsApp notifications.
4444

4545
This creates a durable direct exchange named `notifications` that routes messages using exact routing keys.
4646

47-
The output is similar to:
47+
You should see:
4848
```output
4949
exchange declared
5050
```
@@ -59,7 +59,7 @@ exchange declared
5959

6060
This creates a durable queue to persist WhatsApp notification messages until consumed.
6161

62-
The output is similar to:
62+
You should see:
6363
```output
6464
queue declared
6565
```
@@ -75,7 +75,7 @@ queue declared
7575

7676
This links the exchange to the queue using the `whatsapp` routing key.
7777

78-
The output is similar to:
78+
Expected output:
7979
```output
8080
binding declared
8181
```
@@ -265,3 +265,28 @@ You've implemented an asynchronous notification system using RabbitMQ with direc
265265
This pattern works well for targeted notifications (email, SMS, WhatsApp, push notifications) where routing needs to be simple and predictable. Each notification type routes to a dedicated queue using an exact-match routing key, providing reliable, guaranteed delivery.
266266

267267
The key difference from Use Case 1 is the routing approach: Use Case 1 uses topic exchange with wildcard routing (`order.*`) for flexible event streams, while Use Case 2 uses direct exchange with exact routing (`whatsapp`) for targeted notifications.
268+
269+
## Cleanup resources
270+
271+
When you're finished with this Learning Path, clean up your resources to avoid unnecessary charges:
272+
273+
**Stop RabbitMQ workers:**
274+
Press Ctrl+C in each terminal running a Python worker.
275+
276+
**Delete RabbitMQ resources:**
277+
278+
```console
279+
./rabbitmqadmin delete queue name=order.events
280+
./rabbitmqadmin delete queue name=whatsapp.notifications
281+
./rabbitmqadmin delete queue name=testqueue
282+
./rabbitmqadmin delete exchange name=events
283+
./rabbitmqadmin delete exchange name=notifications
284+
```
285+
286+
**Delete the Google Cloud VM:**
287+
288+
Navigate to **Compute Engine > VM Instances** in the Google Cloud Console, select your VM, and select **Delete**.
289+
290+
**Delete the firewall rule:**
291+
292+
Navigate to **VPC Network > Firewall**, find the `allow-tcp-15672` rule, and select **Delete**.

0 commit comments

Comments
 (0)