Skip to content

maslechkin86/go-rabbitmq

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚙️ Install and setup RabbitMQ

This command will download the latest RabbitMQ and start it as a background process, exposing ports 5672 and 15672.

docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.11-management

Create a new user

docker exec rabbitmq rabbitmqctl add_user user_name user_password

Set a user admin permissions

docker exec rabbitmq rabbitmqctl set_user_tags user_name administrator

Delete a user

docker exec rabbitmq rabbitmqctl delete_user user_name

Create a new vhost

Creat a new vhost customers and set full permissions for guest user to the vhost.

docker exec rabbitmq rabbitmqctl add_vhost customers
docker exec rabbitmq rabbitmqctl set_permissions -p customers guest ".*" ".*" ".*"

Create a new exchange

Create a new exchange customer_events and set permissions for guest user.

docker exec rabbitmq rabbitmqadmin declare exchange --vhost=customers name=customer_events type=topic -u guest -p guest durable=true
docker exec rabbitmq rabbitmqctl set_topic_permissions -p customers guest customer_events "^customers.*" "^customers.*"

1️⃣ Publishing and Consuming Messages

01.webp We are using FIFO Queues(First in First out). This means each message is only sent to one Consumer.

go run cmd/consumer01/main.go
go run cmd/producer01/main.go

2️⃣ Publish and Subscribe (PubSub)

02.webp In a publish and subscribe schema, each consumer receives the same message.

Recreate an exchange customer_events with Fanout as the type and give full access for guest user.

docker exec rabbitmq rabbitmqadmin delete exchange name=customer_events --vhost=customers -u guest -p guest
docker exec rabbitmq rabbitmqadmin declare exchange --vhost=customers name=customer_events type=fanout -u guest -p guest durable=true
docker exec rabbitmq rabbitmqctl set_topic_permissions -p customers guest customer_events ".*" ".*"

Run two consumers app and one producer.

go run cmd/consumer02/main.go
go run cmd/producer02/main.go

Remote procedure call (RPC)

03.webp The producer receives an acknowledgement of the processing of a message from the consumer within a new message.

Creating a new exchange customer_callbacks with Direct type and adding full permissions for guest user.

docker exec rabbitmq rabbitmqadmin declare exchange --vhost=customers name=customer_callbacks type=direct -u guest -p guest durable=true
docker exec rabbitmq rabbitmqctl set_topic_permissions -p customers guest customer_callbacks ".*" ".*"

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages