laravel5.4
感觉官网文档说滴不够详细...安装predis官网很详细,这里略过....

生成命令

直接使用 Artisan 命令 make:command,该命令会在 app/Console/Commands 目录下创建一个新的命令类。如果该目录不存在,不用担心,它将会在你首次运行 Artisan 命令 make:command 时被创建。生成的命令将会包含默认的属性设置以及所有命令都共有的方法,

这里我生成一个RedisSubscribe.php类,执行下面命令:

php artisan make:command RedisSubscribe

引用官网上说的

Redis 还提供了调用 Redis 的publish 和 subscribe 命令的接口。这些 Redis 命令允许你在给定“频道”监听消息,你可以从另外一个应用发布消息到这个频道,甚至使用其它编程语言,从而允许你在不同的应用/进程之间轻松通信。

首先,让我们使用 subscribe 方法通过 Redis 在一个频道上设置监听器。由于调用 subscribe 方法会开启一个常驻进程,我们将在 Artisan 命令中调用该方法:

redis必须开启一个轮询监听频道滴服务进程,也就是上面说的 在 Artisan 命令中调用,如何调用?稍后测试下,
执行上诉命令后会看到:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\Redis;
class RedisSubscribe extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'redis:subscribe'; /**
* The console command description.
*
* @var string
*/
protected $description = 'Subscribe to a Redis channel'; /**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
} /**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
\Redis::psubscribe(['user-channel'], function($message) {
echo $message;
});
}
}
$signature 这里的配置会执行以下命名后看到:
php artisan list

比如我滴是:

现在,我们可以使用 publish 发布消息到该频道:

在执行以下代码前 现在控制台中输入:php artisan redis:subscribe 启动服务进程

Route::get('test', function () {
// 路由逻辑...
  \Redis::publish('user-channel', json_encode(['username' => 'mary','message'=>'i miss you']));
 });

浏览器访问localhist:/test 执行上面的路由发布消息,会看到窗口中会接受到消息推送

一个消息发布/订阅基本实现了,那么问题来了,如何在web端实现消息订阅呢?
官网是这样说滴:

通过代码调用命令

有时候你可能希望在 CLI 之外执行 Artisan 命令,比如,你可能希望在路由或控制器中触发 Artisan 命令,你可以使用 Artisan 门面上的call 方法来完成这个功能。call 方法接收被执行的命令名称作为第一个参数,命令参数数组作为第二个参数,退出代码被返回:

那么我这里应该是

Route::get('/get', function () {
$exitCode = \Artisan::call('redis:subscribe');//这里应该是代码启动进程监听的命令了
});

结果一直超时并不成功!...

对于laravel 的消息订阅模式..web端如何完整实现?如果有路过大神玩过,请留下宝贵的笔迹在下参考学习下额

关于laravel5 消息订阅/发布的理解初的更多相关文章

  1. Redis之Redis消息订阅发布简介

    概念: Redis消息订阅发布是进程间的一种消息通信模式,发送者pub发送消息,订阅者sub接收消息. 使用须知: 需要先订阅后发布,才能接收到消息.在订阅时,相当于创建了可供发布的频道. 案例: ( ...

  2. 组件通信之全局事件总线 & 消息订阅发布

    全局事件总线 介绍 一种组件间通信的方式,适用于任意组件间通信. 在使用全局事件总线之前需要一些知识准备 所有组件实例的原型对象的原型对象就是 Vue 的原型对象,即VueComponent.prot ...

  3. Redis中的简单事物以及消息订阅发布

    Redis支持简单的事物,但是没有mysql的Innodb支持的那么的完善 我们接下来看一下Redis和Mysql的事物的一个对比:   MySQL Redis 开启 start transactio ...

  4. 基于Redis的消息订阅/发布

    在工业生产设计中,我们往往需要实现一个基于消息订阅的模式,用来对非定时的的消息进行监听订阅. 这种设计模式在 总线设计模式中得到体现.微软以前的WCF中实现了服务总线 ServiceBus的设计模式. ...

  5. [SpingBoot guides系列翻译]Redis的消息订阅发布

    Redis的消息 部分参考链接 原文 CountDownLatch 概述 目的 这节讲的是用Redis来实现消息的发布和订阅,这里会使用Spring Data Redis来完成. 这里会用到两个东西, ...

  6. SpringBoot+Redis 实现消息订阅发布

    什么是 Redis Redis 是一个开源的使用 ANSI C语言编写的内存数据库,它以 key-value 键值对的形式存储数据,高性能,读取速度快,也提供了持久化存储机制. Redis 通常在项目 ...

  7. NSQ的消息订阅发布测试

    在测试NSQ的Quick Start发现这样一个问题,就是同时只能有一个订阅实例 $ nsq_to_file --topic=test --output- 当存在两个实例时则消息会被发送给其中的一个实 ...

  8. 【并发】9、借助redis 实现生产消费,消息订阅发布模式队列

    这个就是一个消息可以被多次消费的范例了 其实这个实现的方式可以参考我之前的设计模式,观察者模式 https://www.cnblogs.com/cutter-point/p/5249780.html ...

  9. C# 数据推送 实时数据推送 轻量级消息订阅发布 多级消息推送 分布式推送

    前言 本文将使用一个NuGet公开的组件技术来实现数据订阅推送功能,由服务器进行推送数据,客户端订阅指定的数据后,即可以接收服务器推送过来的数据,包含了自动重连功能,使用非常方便 nuget地址:ht ...

随机推荐

  1. C#关于xml文件和TreeView之间的转换解析

    主窗体: using System; using System.Collections; using System.Collections.Generic; using System.Componen ...

  2. objec类中方法介绍

    java.lang.object,是Java中所有类(当然Object类除外)的终极父类,其中数组也继承了Object类,但是接口是不继承Object类的. Object中方法如下(11个): Cla ...

  3. kafka中zookeeper的操作

    bin/zookeeper-shell.sh localhost:2181 <<< "get /brokers/ids/4" ./zkCli.sh -server ...

  4. post推送消息时的乱码

    URL realUrl = new URL(url); // 打开和URL之间的连接 URLConnection conn = realUrl.openConnection(); // 设置通用的请求 ...

  5. [转] Snapshotting with libvirt for qcow2 images

    http://kashyapc.com/2011/10/04/snapshotting-with-libvirt-for-qcow2-images/ Libvirt 0.9.6 was recentl ...

  6. Virtual Networking

    How the virtual networks used by guests work Networking using libvirt is generally fairly simple, an ...

  7. 使用idea配置tomcat将web项目跑起来

    链接:https://www.cnblogs.com/avivaye/p/6437555.html

  8. 机器学习入门10 - 正则化:简单性(Regularization for Simplicity)

    原文链接:https://developers.google.com/machine-learning/crash-course/regularization-for-simplicity 正则化指的 ...

  9. 安卓TabLayout+ViewPager实现切页

    安卓使用TabLayout+ViewPager+Fragment 实现页面切换,可实现左右滑动切换视图界面和点击切换 可自定义菜单栏是在顶部还是在底部 一.实现效果: 二.实现过程: 2.1 一些重要 ...

  10. LockSupport浅析

    最初想有没有必要写这类文章,网上相关的文章很多,有些更为透彻,自己再写一篇不免有重复造轮子的感觉. 但想想写文除了分享知识外也可以帮助自己总结归纳,也稍稍可以提高点自我满足感. 基本的线程阻塞原语,被 ...