I am working on the project which need to broadcast latitude and longitude on realtime

I have something like below

namespace App\Events;
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Support\Facades\Redis;

class TrackersBroadcast extends Event implements ShouldBroadcast
{
        public  $lat, $lng,$imei,$date_time

    use SerializesModels;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct(
                                    $lat, 
                                    $lng, 
                                    $imei, 
                                    $date_time 

                                )

    {
        $this->lat = $lat;
        $this->lng = $lng;
        $this->imei = $imei;
        $this->date_time = $date_time;

    }

    /**
     * Get the channels the event should be broadcast on.
     *
     * @return array
     */
    public function broadcastOn()
    {
        return ['tracker-channel'];
    }


}

在某些情况下,我需要触发实时邮箱,所以我决定实现laravel消息队列,如下所示

namespace App\Jobs;

use App\Jobs\Job;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Mail;

class SendAlertEmail extends Job implements ShouldQueue
{
    use InteractsWithQueue, SerializesModels;
    public  $data;
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($data)
    {
        $this->data=$data;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        //
        Mail::send('emails.test', ['testVar' => $this->data], function($message) {
            $message->from('no-reply@sample.com', 'Website Name');
            $message->to('developer@gmail.com')->subject('A simple test');
        });
    }
}

whenever I run php artisan queue:listen database it will queue my broadcasting event too . I dont want to queue the broadcast event . How to do that?

enter image description here

推荐答案

Because Laravel Event Broadcasting queued by default if you extend ShouldBroadcast interface. If you don't want Event Broadcasting queued, you should extend ShouldBroadcastNow interface.

use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;

class TrackersBroadcast implements ShouldBroadcastNow
{
......
}

因此,这意味着您的事件广播将使用同步队列驱动程序.

Laravel相关问答推荐

laravel如何在Blade 模板中将元素添加到数组

调用字符串上的成员函数

在 Laravel 中设置多个 Vue 组件的问题

如何在laravel中输出奇偶行

Laravel 5.8 在从已清除的会话中单击注销后显示419 Page Expired

如何判断用户Electron邮件是否已存在

插入重复键时,laravel eloquent 忽略错误

Laravel 5.1 - 如何在进度条上设置消息

Laravel 5 - 手动分页

没有 index.php 的路由不起作用

将 Laravel MYSQL 更改为 utf8mb4 以在现有数据库中支持表情符号

Laravel 5.x 中 onUpdate / onDelete 的可用操作

Laravel 应用程序中应用程序键的意义是什么?

使用 Laravel 将两个模型合并到一个分页查询中,并带有Eager加载的关系

反向代理后面的 Laravel 路由

Laravel - DecryptException:'MAC 无效'

我在哪里放置可以显示 Flash 消息的 Laravel 4 辅助函数?

复合唯一密钥验证 - laravel

Laravel s3 多桶

如何在 laravel 表单验证错误消息中给出自定义字段名称