作者:我就唔分_753 | 来源:互联网 | 2023-09-18 00:06
RabbitMQ基础教程(1)–HelloWorld注:本文是对浩瀚博客的进修和总结,能够存在明白毛病。请带着疑心的眼力,同时假如有毛病希望能指出。假如你喜欢我的文章,能够关注我的
RabbitMQ 基础教程(1) – Hello World
注:本文是对浩瀚博客的进修和总结,能够存在明白毛病。请带着疑心的眼力,同时假如有毛病希望能指出。
假如你喜欢我的文章,能够关注我的私家博客:http://blog-qeesung.rhcloud.com/
RabbitMQ
是一个message broker
,音讯的临盆者(producer)
担任临盆音讯,然后将音讯传入传入queue(音讯行列)
,消耗者(consumer)
从音讯行列中掏出音讯举行处置惩罚。
简朴来讲,音讯行列就像邮局一样,我们将信封(音讯)投递到邮局的信筒,然后信差依据信封上面的地点将信封投递到对应的地点(消耗者)。
以下所示:
queue
+---------------+ +--+--+--+--+--+--+--+ +---------------+
| producer |-----> |m1|m2| ... | | | |------>| consumer |
+---------------+ +--+--+--+--+--+--+--+ +---------------+
装置RabbitMQ
RabbitMQ
是基于Erlang
来开辟的,起首装置Erlang
的运转环境
装置Erlang
Erlang官网下载并装置
装置RabbitMQ
RabbitMQ官网下载并装置
设置RabbitMQ
博主实在也是RabbitMQ
小白,敕令行东西不太熟悉,光荣的是RabbitMQ
为我们供应web设置页面,然则要举行一些简朴的设置。
rabbitmq-plugins.bat enable rabbitmq_management
rabbitmq-service.bat stop
rabbitmq-service.bat install
rabbitmq-service.bat start
Hello World 例子
RabbitMQ
支撑多种语言,包含Python
,PHP
,nodejs
等等,我们这里的例子就采纳Nodejs
。
装置RabbitMQ
库
npm install amqplib
这里我们起首将音讯推入行列,然后消耗者从行列中去除音讯举行消耗。
临盆音讯
var amqp = require('amqplib/callback_api');
// 连接上RabbitMQ服务器
amqp.connect('amqp://localhost', function(err, conn) {
conn.createChannel(function(err, ch) {
var q = 'hello';
// 声明行列,然后将行列中的音讯耐久化作废
ch.assertQueue(q, {durable: false});
// 将字符串存入Buffer中,并推入行列
ch.sendToQueue(q, new Buffer('Hello World!'));
console.log(" [x] Sent 'Hello World!'");
});
});
/**
$ node rabbit-producer.js
[x] Sent 'Hello World!'
*/
如今音讯已发送到RabbitMQ
的行列中
消耗音讯
var amqp = require('amqplib/callback_api');
amqp.connect('amqp://localhost', function(err, conn) {
conn.createChannel(function(err, ch) {
var q = 'hello'; // 声明已存在的行列
ch.assertQueue(q, {durable: false});
console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", q);
// 监听行列上面的音讯
ch.consume(q, function(msg) {
console.log(" [x] Received %s", msg.content.toString());
}, {noAck: true});
});
});
/**
$ node rabbit-consumer.js
[*] Waiting for messages in hello. To exit press CTRL+C
[x] Received Hello World!
*/
在本文中学问引见了RabbitMQ
的一些基础学问,RabbitMQ
另有一些庞杂东西,我们将会在后面的文章中一一引见。