资讯专栏INFORMATION COLUMN

RabbitMQ 基础教程(1) - Hello World

wushuiyong / 1612人阅读

摘要:基础教程注本文是对众多博客的学习和总结,可能存在理解错误。请带着怀疑的眼光,同时如果有错误希望能指出。安装库这里我们首先将消息推入队列,然后消费者从队列中去除消息进行消费。

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 Command Prompt 或 直接通过cmd进入到RabbitMQ Server的安装目录下的rabbitmq_server-*/sbin路径

执行下面的命令:

rabbitmq-plugins.bat enable rabbitmq_management
rabbitmq-service.bat stop
rabbitmq-service.bat install
rabbitmq-service.bat start

最后在http://localhost:15672/就可以访问RabbitMQ为我们搭建起来的Web服务器,初始化用户名和密码是guestguest

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还有一些复杂东西,我们将会在后面的文章中一一介绍。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/79586.html

相关文章

  • RabbitMQ+PHP 教程一(Hello World

    摘要:在中间的框是一个队列的消息缓冲区,保持代表的消费。本教程介绍,这是一个开放的通用的协议消息。我们将在本教程中使用,解决依赖管理。发送者将连接到,发送一条消息,然后退出。注意,这与发送发布的队列匹配。 介绍 RabbitMQ是一个消息代理器:它接受和转发消息。你可以把它当作一个邮局:当你把邮件放在信箱里时,你可以肯定邮差先生最终会把邮件送到你的收件人那里。在这个比喻中,RabbitMQ就...

    silencezwm 评论0 收藏0
  • RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例

    摘要:进行插入操作的端称为队尾,进行删除操作的端称为对头。还有个专业术语要了解下生产者发送消息的应用程序被称为生产者。消费者接收消息的应用程序被称为消费者。参考链接下安装及操作常用命令译实战教程一你是否听说过或者使用过队列? 你是否听说过或者使用过消息队列? 你是否听说过或者使用过RabbitMQ? 提到这几个词,用过的人,也许觉得很简单,没用过的人,也许觉得很复杂,至少在我没使用消息队列之前,听...

    SegmentFault 评论0 收藏0
  • rabbitmq中文教程python版 - 介绍

    摘要:每当我们收到一条消息,这个回调函数就被皮卡库调用。接下来,我们需要告诉这个特定的回调函数应该从我们的队列接收消息为了让这个命令成功,我们必须确保我们想要订阅的队列存在。生产者计划将在每次运行后停止欢呼我们能够通过发送我们的第一条消息。 源码:https://github.com/ltoddy/rabbitmq-tutorial 介绍 RabbitMQ是一个消息代理:它接受和转发消息。你...

    yimo 评论0 收藏0
  • rabbitmq中文教程python版 - 工作队列

    摘要:我们将任务封装为消息并将其发送到队列。为了确保消息永不丢失,支持消息确认。没有任何消息超时当消费者死亡时,将重新传递消息。发生这种情况是因为只在消息进入队列时调度消息。这告诉一次不要向工作人员发送多个消息。 源码:https://github.com/ltoddy/rabbitmq-tutorial 工作队列 showImg(https://segmentfault.com/img/r...

    tabalt 评论0 收藏0
  • RabbitMQ+PHP 教程二(Work Queues)

    摘要:平均每个消费者将得到相同数量的消息。消息确认完成任务可能需要几秒钟。为了确保消息不会丢失,支持消息确认。没有任何消息超时当这个消费者中止了,将会重新分配消息时。这是因为只是调度消息时,消息进入队列。 showImg(https://segmentfault.com/img/bVXNuN?w=332&h=111); 介绍 在上一个 Hello World 教程中,我们编写了从指定队列发送...

    iKcamp 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<