Home  >  Article  >  Backend Development  >  RabbitMQ basic concepts and principle examples

RabbitMQ basic concepts and principle examples

零下一度
零下一度Original
2017-06-23 16:35:143076browse

Basic concepts and principles of RabbitMQ

1.AMQP, Advanced Message Queuing Protocol, is an open standard for application layer protocols. Designed for message-oriented middleware.

2.RabbitMQ is an open source AMQP implementation, and the server side is written in Erlang language.

3.Channel

Channel is the most important interface for us to deal with RabbitMQ. Most of our business operations are completed in the Channel interface, including Define Queue, define Exchange, bind Queue and Exchange, publish messages, etc.

4.Exchange (The producer sends the message to Exchange (exchange), and Exchange routes the message to one or more Queues (or discards them). Exchange Type commonly used by RabbitMQ There are four types: fanout, direct, topic, and headers)

5.Queue (RabbitMQ’s internal object, used to store messages)

6.Basic working principle

## Client (producer) send Message -->Exchange (the switch saves the message to the corresponding queue through different types)-->Queue

The client (consumer) consumes messages in the queue through subscription.

The above basic concepts are compiled from Detailed introduction to the basic concepts of RabbitMQ

Installing RabbitMQ in Windows system

1. Download and install erlang (I use otp_win64_19.3 version)

Download address (choose 32 or 64 bits according to the operating system)

2. Download and install rabbitmq-server (I use It is rabbitmq-server-3.6.10 version)

Download address

After installation, see

in the installation directory

Next, use the enable DOS command

a. cd to the sbin directory. My installation directory is D:\RabbitMQServer\rabbitmq_server-3.6.10\sbin. Enter D: and press Enter, cd RabbitMQServer\rabbitmq_server-3.6 .10\sbin

b. Check whether the installation is successful. Command:

rabbitmqctl status

c. Install the management plug-in command:

rabbitmq-plugins enable rabbitmq_management

The installation is successful, enter http:/ in the browser /127.0.0.1:15672/

Enter the guest account guest password guest and successfully log in. Are you a little excited?

The guest account is an administrator account and can add Exchanges, Queues, and Admin. But we generally do not use the guest account and continue to use commands to add accounts and permissions.

d: Add user:

rabbitmqctl.bat add_user username password

e: Add "Super Administrator" role:

rabbitmqctl.bat set_user_tags username administrator

mymq account is also a super administrator, Can access virtual hosts: No access, You can see that there are no virtual machines that can be accessed. Next, add the virtual machine.

f: Add a virtual machine:

rabbitmqctl add_vhost vhostName

## myvhost virtual machine does not exist Users, next bind an account to the virtual machine.

g: Set virtual machine and user permissions:

rabbitmqctl set_permissions -p virtual machine name account name ".*" ".*" ".*"

h: Out of habit, I usually delete the guest account:

rabbitmqctl.bat delete_user username

Okay, log in to the management page again, everything is normal, and then the actual combat begins.

Basic use of EasyNetQ

Install EasyNetQ in the project

## EasyNetQ depends on RabbitMQ.Client, so it will be installed into the project.

PublishPublish message

Model has a Queue feature, which defines the Queue name and Exchange name. Then directly use the Publish method to push the Msg to the specified queue through the switch specified by the Model.

Run the code and take a look at the MQ management page.

The switch TestQueue.Exchange specified by Model has been created, Type: topic, Features: D.

D:Durable Description The switch created by default is durable.

Because the message has not been subscribed, the corresponding queue cannot be seen in Queues.

Subscribe subscription message

Why do we need to put a while(true) on the subscription code? The purpose is to simulate the console program as a Windows service, because the console program runs in a flash and cannot actually subscribe to MQ messages.

In actual development,

Topself is generally used to publish the console program into Windows Service. I will write a learning blog about Topself later when I have time.

Repeat the Publish operation just now to test the entire process.

Custom Topic

In this way, the message will be sent to the address beginning with the name Test. in all Queue queues.

Send and Receive

Messages can be sent to the specified queue through send and receive.

##

The above is the detailed content of RabbitMQ basic concepts and principle examples. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn