Laravel5.2使用RabbitMQ初体验_励志成为一个弓箭手的程序猿的博客-CSDN博客


本站和网页 https://blog.csdn.net/sinat_21125451/article/details/53422648 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Laravel5.2使用RabbitMQ初体验_励志成为一个弓箭手的程序猿的博客-CSDN博客
Laravel5.2使用RabbitMQ初体验
励志成为一个弓箭手的程序猿
于 2016-12-01 16:01:57 发布
10449
收藏
分类专栏:
php
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sinat_21125451/article/details/53422648
版权
php
专栏收录该内容
35 篇文章
0 订阅
订阅专栏
由于最近需要使用rabbitmq来进行消息队列的读取,但以前从来都没有接触过这等高深的技术,所以只好从头开始研究,下面就把这几周的成果分享出来,针对没有接触过消息队列的同学,希望能给你们一些帮助。
安装rabbitmq使用composer安装laravel的php-amqplib/php-amqblib包推送消息到队列和读取队列中的消息
安装rabbitmq
安装rabbit首先需要安装erlang环境,然后下载rabbitmq客户端进行安装,由于我实在windows环境下进行搭建的,所以过程很简单,这里就不直接介绍安装方法了,可以自行百度。安装完成之后记得使用命令行安装rabbitmq的浏览器插件,然后就可以在浏览器中看到rabbitmq的信息了。
由于我研究的时间不是很长,所以这里面很多我也不是很清楚。这个Queues下面的列表代表着这个服务器上存在几个队列。
使用composer安装扩展
扩展地址 可以直接在composer.json文件中添加,然后执行composer update,也可以在命令行中执行composer require
推送消息到rabbitmq中
Github上有详细的实例代码,我这里只是将其简化。
config.php
<?php
//创建配置文件
//使用自动加载类
require_once __DIR__ . '/vendor/autoload.php';
define('HOST', 'localhost');
define('PORT', 5672); // 注意这里端口号,在浏览器中的端口号是15672,但在这里确实5672
define('USER', 'guest');
define('PASS', 'guest');
define('VHOST', '/');
//If this is enabled you can see AMQP output on the CLI
//如果为true会显示一堆<hex>这种类型的调试信息。
define('AMQP_DEBUG', false);
amqp_publisher.php
<?php
// 使用配置文件
include(__DIR__ . '/config.php');
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
$exchange = 'router'; // 交换器,在我理解,如果两个队列使用一个交换器就代表着两个队列是同步的,这个队列里存在的消息,在另一个队列里也会存在
$queue = 'test'; // 队列名称
$connection = new AMQPStreamConnection(HOST, PORT, USER, PASS, VHOST); // 创建连接
$channel = $connection->channel();
$channel->queue_declare($queue, false, true, false, false);
$channel->exchange_declare($exchange, 'direct', false, true, false);
$channel->queue_bind($queue, $exchange); // 队列和交换器绑定
$messageBody = 'testinfo12'; // 要推送的消息
$message = new AMQPMessage($messageBody, array('content_type' => 'text/plain', 'delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT));
$channel->basic_publish($message, $exchange); // 推送消息
$channel->close();
$connection->close();
执行完这段代码之后会发现rabbitmq的test队列会多出一个消息
从rabbitmq中取出消息
在这里我使用的是github中demo中的basic_get.php中的方法,还有一种amqp_consumer.php方法,大家可以试试看。 basic_get.php
<?php
include(__DIR__ . '/config.php');
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
$exchange = 'router';
$queue = 'test';
$connection = new AMQPStreamConnection(HOST, PORT, USER, PASS, VHOST);
$channel = $connection->channel();
$message = $channel->basic_get($queue); //取出消息
print_r($message->body);
$channel->basic_ack($message->delivery_info['delivery_tag']); // 确认取出消息后会发送一个ack来确认取出来了,然后会从rabbitmq中将这个消息移除,如果删掉这段代码,会发现rabbitmq中的消息还是没有减少
$channel->close();
$connection->close();
在laravel中使用
因为我们需要实时监听这个消息队列中是否有消息,如果有就取出消息队列进行处理。 这里laravel提供了一个commad。 在项目目录下执行php artisan make:console GetMessage 这里的名字可以自己起 然后找到app/Console/Commands,会发现多出了一个GetMessage.php文件。
<?php
namespace Ckk\Console\Commands;
use Illuminate\Console\Command;
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
class UserCenter extends Command
/**
* The name and signature of the console command.
* @var string
*/
protected $signature = 'getMessage'; // 这里是生成命令的名称
/**
* The console command description.
* @var string
*/
protected $description = '这里是这个命令的描述';
/**
* Create a new command instance.
* @return void
*/
public function __construct()
parent::__construct();
/**
* Execute the console command.
* @return mixed
*/
public function handle()
// 这里写具体代码,这里可以创建一个配置文件,然后使用配置文件控制消息队列的配置信息
$queue = 'test';
$connection = new AMQPStreamConnection('localhost', '5672', 'guest', 'guest');
$channel = $connection->channel();
$channel->queue_declare($queue, false, true, false, false);
$message = $channel->basic_get($queue);
$channel->basic_ack($message->delivery_info['delivery_tag']);
if ($message->body) {
print_r($message->body);
\Log::info('queueInfo:' . $message->body);
$channel->close();
$connection->close();
在Console目录下的Kernel.php中添加
protected $commands = [
GetMessage::class,
// Commands\Inspire::class,
];
在项目目录下执行 php artisan list 查看是否有这个命令 如果操作正确会显示getMessage后面是一堆乱码,因为我的命令描述写的是中文。 然后在命令行中执行php artisan getMessage 会发现rabbitmq中队列里的消息减少了一个,然后打开日志文件,会发现已经写进去了。那么怎么实时进行检测呢,只要使用linux自带的crontab不停的执行php artisan getMessage 就好了。
励志成为一个弓箭手的程序猿
关注
关注
点赞
收藏
打赏
评论
Laravel5.2使用RabbitMQ初体验
由于最近需要使用rabbitmq来进行消息队列的读取,但以前从来都没有接触过这等高深的技术,所以只好从头开始研究,下面就把这几周的成果分享出来,针对没有接触过消息队列的同学,希望能给你们一些帮助。安装rabbitmq使用composer安装laravel的php-amqplib/php-amqblib包推送消息到队列和读取队列中的消息安装rabbitmq安装rabbit首先需要安装erlang
复制链接
扫一扫
专栏目录
Laravel使用RabbitMQ的方法示例
12-20
导语
RabbitMQ 想必大家都有了解,不做多介绍来。这里实现的是用 RabbitMQ 作为 Larvel 队列的驱动,替代 Redis。下面以 Laradock 中安装示例。
安装
切换到 laradock 目录,将 .env 中关于 INSTALL_AMQP 的值修改为 true
docker-compose stop workspace php-fpm php-worker
docker-compose build workspace php-fpm php-worker rabbitmq
docker-compose up -d workspace php-fpm
Laravel开发-laravel-amqp
08-27
Laravel开发-laravel-amqp 颜色Laravel AMQP
评论 1
您还未登录,请先
登录
后发表或查看评论
RabbitMq安装与使用
weixin_48244108的博客
09-13
307
RabbitMQ实战 安装与使用
laravel 使用rabbitmq
最新发布
m0_37634311的博客
10-27
705
php laravel rabbitmq
laravel-amqp:Laravel和Lumen的AMQP包装器可以发布和使用消息
05-02
bschmitt / laravel-amqp
用于Laravel和Lumen的AMQP包装器,用于发布和使用消息,尤其是来自RabbitMQ的消息
特征
高级队列配置
轻松将消息添加到队列
使用有用的选项监听队列
安装
作曲家
将以下内容添加到composer.json中的require部分:
"bschmitt/laravel-amqp" : "2.*" ( Laravel >= 5.5 )
"bschmitt/laravel-amqp" : "1.*" ( Laravel < 5.5 )
$ php composer update
或者
$ php composer require bschmitt/laravel-amqp
一体化
流明
在Lumen应用程序的根目录中创建一个config文件夹,然后将内容从vendor / bschmitt / laravel-amqp /
laravel6使用RabbitMQ作为消息中间件
Ache的博客
05-24
1284
安装amqp扩展
确保已安装rabbitmq-c-dev。我是alpine镜像下的使用apk add rabbmit-c-dev安装
cd ~
wget http://pecl.php.net/get/amqp-1.10.2.tgz
tar -zxf amqp-1.10.2.tgz
cd amqp-1.10.2
phpize
./configure
make && make install
cd ~
rm -rf amqp-1.10.2*
重启php,php -m查看是否成功安装amqp。
laravel+rabbitMQ
m0_67402125的博客
04-20
794
laravel+rabbitMQ
前言
一、安装Erlang环境
1.安装erlang前安装下依赖文件
2.去erlang官网下载erlang安装包
3.解压
4.编译安装
5.配置环境变量
二、安装rabbitmq
1.下载
2.解压
3.操作
4.添加用户
二、laravel安装rabbitmq
1.Composer 安装
2.config/app.php ,providers 中添加:
3.app/config/queue.php 配置中c
laravel使用rabbitmq
Dear_xq 的博客
08-01
881
生产者在把消息推送到laravel的事件监听中,初始化生产者配置,创建rabbitmq的所需要绑定的交换机,路由,队列,并且进行绑定。并且监听消费者,当有消息消费时,则从rabbitmq的队列中获取消息,消费成功进行ack。两个消费者消费消息,并不是轮询的,而是看谁空闲,则由谁来消费,如果都空闲,则随机,如果消费者处理不过来,可以增加多几台服务器,一起进行消息的消费。注为何能在其他服务器监听到别的服务器监听到laravel发布的消息?因为在监听队列的时候,指定了rabbitmq为驱动。......
laravel + rabbitmq
rockywish的博客
06-19
5247
一、安装laravel 两种方式
1. composer global require laravel/installer
laravel new wendao
2. composer create-project --prefer-dist laravel/laravel wendao
二、安装rabbitmq
1. docker pull rabbitmq:management //拉取rabbitmq 镜像
//启动容器
2.docker run -d --nam
(二)laravel整合rabbitmq消息队列(使用laravel-queue-rabbitmq)
denglei的博客
01-12
3554
参考文档:https://learnku.com/docs/laravel/8.x/queues/9398
https://packagist.org/packages/vladimir-yuldashev/laravel-queue-rabbitmq
1、Composer 安装 laravel-queue-rabbitmq,安装注意应用包对应的laravel版本。
composer require vladimir-yuldashev/laravel-queue-rabbitmq
2、在 con
laravel之rabbitmq组件使用
yan_dk的专栏
06-15
1700
介绍
laravel入门及技术指南,参见相关文章。laravel集成使用消息中间件rabbitmq,提供服务器异步消息处理,提升服务器性能。下面谈谈如何安装及集成使用。
安装
代码集成
.env文件
...
#laravel默认连接为sync,改为rabbitmq
QUEUE_CONNECTION=rabbitmq
#增加rabbitmq
QUEUE_DRIVER=rabbitmq
RABBITMQ_HOST=172.17.0.3
RABBITMQ_PORT=567...
RabbitMQ初体验
qq_17812167的博客
07-11
270
想要使用AMQP作为一个中间件,实现发布订阅功能,通过查找资料,知道了RabbbitMQ,便开始简单研究了一下。
首先是安装RabbitMQ Server ,下载地址http://www.rabbitmq.com/download.html。
因为使用端口5672,所以我也查看了一下端口使用情况:
laravel整合rabbitmq消息队列(使用laravel-queue-rabbitmq)
hshshshshs1的专栏
12-17
1100
官网地址:https://packagist.org/packages/vladimir-yuldashev/laravel-queue-rabbitmq#v10.2.0
安装
1.安装插件
composer require vladimir-yuldashev/laravel-queue-rabbitmq`
报错:
因为我是laravel7的版本,因此找对应的版本
composer require vladimir-yuldashev/laravel-queue-rabbitmq:^10.2
还是
基于laravel5.2进行rabbitmq队列服务发送接收信息
08-03
347
1.运行环境:
win7系统
安装rabbitmq之前需要安装erlang软件
使用composer安装laravel的php-amqplib/php-amqblib包
2.安装rabbitmq
  安装rabbitmq之前需要安装erlang软件,然后下载rabbitmq客户端进行安装。
3.使用composer安装php-amqpblib扩展
  直接在comp...
laravel+php+amqplib,Laravel使用RabbitMQ的方法示例
weixin_29116603的博客
04-07
330
导语RabbitMQ 想必大家都有了解,不做多介绍来。这里实现的是用 RabbitMQ 作为 Larvel 队列的驱动,替代 Redis。下面以 Laradock 中安装示例。安装切换到laradock 目录,将.env 中关于INSTALL_AMQP 的值修改为truedocker-compose stop workspace php-fpm php-workerdocker-compo...
110.1 RabbitMQ的介绍常见问题和laravel使用方案
米洛口的博客
08-08
207
一 重复消息
为什么会出现消息重复?消息重复的原因有两个:1.生产时消息重复,2.消费时消息重复。
1.1 生产时消息重复
由于生产者发送消息给MQ,在MQ确认的时候出现了网络波动,生产者没有收到确认,实际上MQ已经接收到了消息。这时候生产者就会重新发送一遍这条消息。
生产者中如果消息未被确认,或确认失败,我们可以使用定时任务+(redis/db)来进行消息重试。
1.2消费时消息重复
消费者消费成功后,再给MQ确认的时候出现了网络波动,MQ没有接收到确认,为了保证消息被消费,MQ就会继续给消费者投递之前的
Laravel8 使用 RabbitMQ
Dragon
03-23
2026
使用 RabbitMQ 前需要下载安装 Erlang :Windows 下安装 Erlang_Dragon-v的博客-CSDN博客
安装 PHP amqp 扩展:PHP 安装 amqp 扩展(Windows)_Dragon-v的博客-CSDN博客
开启 PHP sockets:PHP 开启 sockets_Dragon-v的博客-CSDN博客
1、在 RabbitMQ 的界面创建队列和路由:
RabbitMQ 创建 virtual host_Dragon-v的博客-CSDN博客
...
laravel-rabbitmq:一个用于Laravel的简单RabbitMQ库
05-29
Laravel RabbitMQ
一个简单的laravel的Rabbitmq库,基于Publish-Subscribe模式,其中订阅者是Consumer。
目录
2.1。
2.2。
2.3。
2.4。
2.5.
3.1。
3.2。
3.3。 可用的 CLI 命令
3.4. 自定义消息处理器
贡献
1.安装
跑步:
composer require needle-project/laravel-rabbitmq
对于 Laravel 5.5 或更高版本,库应该通过包发现自动加载。
对于低于5.5的Laravel版本,您需要将服务提供商添加到app.php :
<?php
return [
// ...
'providers' => [
// ...
NeedleProject \ LaravelRabbitMq \ P
基于laravel探索rabbitmq的高级特性
Dear_xq 的博客
07-30
192
Pro发送消息到MQ,MQ接收到消息后,产生回响应给Pro,Pro中有一个ConfirmListener异步监听响应应答消息的确认Pro投递消息后,如果MQ收到消息,则会给Pro一个应答Pro接收应答用来确定这条消息是否正常地发送到MQ,该法也是消息可靠性投递的核心保障!用户对于同一操作发起的一次请求或者多次请求的结果是一致的—ReturnListener用于处理一些不可路由的消息。也是生产段添加的一个监听。...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
励志成为一个弓箭手的程序猿
CSDN认证博客专家
CSDN认证企业博客
码龄8年
暂无认证
76
原创
14万+
周排名
37万+
总排名
26万+
访问
等级
3242
积分
26
粉丝
101
获赞
42
评论
47
收藏
私信
关注
热门文章
关于span标签的宽度和高度设置
36582
linux下mysql允许远程连接
10749
Laravel5.2使用RabbitMQ初体验
10448
使用PHP简单操作Memcached
9402
在我的lnmp环境上部署我的网站
9289
分类专栏
WebApp
1篇
Web前端
10篇
php
35篇
数据库
12篇
Linux
15篇
Study
1篇
算法
1篇
杂记
3篇
系统运维
4篇
Python
1篇
Go
1篇
最新评论
关于span标签的宽度和高度设置
不_停_奔_跑:
去瞧瞧
申请免费SSL,给wordpress添加https小绿锁
极客小俊:
你这不需要梯子不行啊!
在我的lnmp环境上部署我的网站
咔咔-:
没开php-fpm
制作一个自定义的checkbox
楠楠不是兰兰:
IE8 点击无效果
laravel5.4使用socialite实现github登录
你会后悔吗:
http://roast.test/login/github/callback?code=XXX&state=XXX,这个是正确结果吗,但是数据库没有添加数据啊
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
重构:改善既有的代码设计【第一章】
PHP位运算与或异或
申请免费SSL,给wordpress添加https小绿锁
2021年1篇
2019年1篇
2018年2篇
2017年10篇
2016年64篇
2015年3篇
目录
目录
分类专栏
WebApp
1篇
Web前端
10篇
php
35篇
数据库
12篇
Linux
15篇
Study
1篇
算法
1篇
杂记
3篇
系统运维
4篇
Python
1篇
Go
1篇
目录
评论 1
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
励志成为一个弓箭手的程序猿
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值