rabbitmq连接认证_rabbitmq+php入门简介

5db46cffd4a3fc68e6a54c7561701a3d.png

官网原文:

http://www.rabbitmq.com/tutorials/tutorial-one-php.html

安装rabbitmq server和php扩展参考:

https://mp.csdn.net/postedit/84646144

介绍

RabbitMQ是一个消息代理:它接受并转发消息。你可以把它当成一个邮局:当你想邮寄信件的时候,你会把信件放在投递箱中,并确信邮递员最终会将信件送到收件人的手里。在这个例子中,RabbitMQ就相当与投递箱、邮局和邮递员。

RabbitMQ与邮局的区别在于:RabbitMQ并不处理纸质信件,而是接受、存储并转发二进制数据---消息。

谈到RabbitMQ的消息,通常有几个术语:

  • 生产者:是指发送消息的程序

  • 队列:相当于RabbitMQ的投递箱。尽管消息在RabbitMQ和你的应用之间传递,但是消息仅仅会在队列之中存储。队列只能存储在内存或磁盘中,本质上是一个大的消息缓冲区。不同的生产者可以发送消息到同一个对队列,不同的消费者也可以从同一个队列中获取消息。

  • 消费者:等待接受消息的程序。

注意,生产者、消费者以及 RabbitMQ并不一定要在同一个主机上,在绝大部分的应用中它们都不在同一主机上。

如下图

P代表生产者,C代表消费者,中间红色的小箱子就代表队列--RabbitMQ为了让消费者收到消息而保持的消息缓冲区

dec3350263bc51e2f7bfd6ae159504e1.png

接下来编写下hello world

RabbitMQ使用多种协议。本教程介绍AMQP 0-9-1,这是一个用于消息传递的开放通用协议

本教程中使用php-amqplib和Composer进行依赖关系管理。

1.先使用composer安装php-amqplib依赖

 在项目中新建composer.json 

{     "require": {         "php-amqplib/php-amqplib": ">=2.6.1"     } } 执行 composer install 

//确保你的服务器已经安装了composer,centos环境安装composer方法https://mp.csdn.net/postedit/84654805

2.生产者

编写发送程序sending

6b3b998440b7fea00c5d5f46df9cf925.png

生产者先连接到rabbitMQ.发送一个消息

在send.php,我们需要先引入需要的库和类

require_once __DIR__ . '/vendor/autoload.php';use PhpAmqpLib\Connection\AMQPStreamConnection;use PhpAmqpLib\Message\AMQPMessage;

接着创建一个连接到服务器

$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');$channel = $connection->channel();

该连接抽象套接字(socket)连接,并为我们负责协议版本协商和认证等。这里,我们连接到一个rabbitmq代理器在本地机器上-使用localhost。如果我们想在不同的机器上连接到一个代理,我们只需在这里指定它的名称或IP地址。guest为账号密码,rabbitmq安装完默认有生成该账号。

接着创建一个通道,声明一个队列

$channel->queue_declare('hello', false, false, false, false);$msg = new AMQPMessage('Hello World!’);//发布$msg消息放到hello队列中$channel->basic_publish($msg, '', 'hello');echo " [x] Sent 'Hello World!'\n”;

关闭连接channel和连接

$channel->close();$connection->close();

send.php完整代码 :

<?php require_once __DIR__ . '/vendor/autoload.php';use PhpAmqpLib\Connection\AMQPStreamConnection;use PhpAmqpLib\Message\AMQPMessage;$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');$channel = $connection->channel();$channel->queue_declare('hello', false, false, false, false);$msg = new AMQPMessage('Hello World!');$channel->basic_publish($msg, '', 'hello');echo " [x] Sent 'Hello World!'\n";$channel->close();$connection->close();?>receiving接收消息

e662292cf500005799d7109e2014d8a7.png

3.消费者

消费者从rabbitmq中读取出消息并打印出来,与生产者不同,我们需保持消费者程序一直运行监听并把消息打印出来。

接着,就来编写一个消费者程序receive.php

与生产者程序相同,首先引入

require_once __DIR__ . '/vendor/autoload.php';use PhpAmqpLib\Connection\AMQPStreamConnection;

打开连接和通道,声明要消费的队列

$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');$channel = $connection->channel();$channel->queue_declare('hello', false, false, false, false);echo " [*] Waiting for messages. To exit press CTRL+C\n”;

 定义一个回调函数来处理消息

$callback = function ($msg) {  echo ' [x] Received ', $msg->body, "\n";}; $channel->basic_consume('hello', '', false, true, false, false, $callback); while (count($channel->callbacks)) {     $channel->wait(); }

完整的receive.php代码:

<?php  require_once __DIR__ . '/vendor/autoload.php'; use PhpAmqpLib\Connection\AMQPStreamConnection; $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest'); $channel = $connection->channel(); $channel->queue_declare('hello', false, false, false, false); echo " [*] Waiting for messages. To exit press CTRL+C\n"; $callback = function ($msg) {     echo ' [x] Received ', $msg->body, "\n"; }; $channel->basic_consume('hello', '', false, true, false, false, $callback); while (count($channel->callbacks)) {     $channel->wait(); } $channel->close(); $connection->close();

下面演示下

执行php send.php,

4a0a1054c6cff0dc80b944b727db4d10.png

打开另一个终端窗口,执行php receive.php,就可以接口到send发送的消息了

4a0a1054c6cff0dc80b944b727db4d10.png

来源:

https://blog.csdn.net/sinat_14826983/article/details/84729479

5bca09fba9e6056a41dd84657b474415.png f85c05f1c4f4442fe429a317e84619cc.gif 9abf549a26faa0f1498843eee48dc5fe.png 214c21650b3f82166c4ad78d3c16474c.gif关注  架构师学习路线  升职涨薪不是梦
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值