定制 laravel-mq/rabbit 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

laravel-mq/rabbit

Composer 安装命令:

composer require laravel-mq/rabbit

包简介

Reusable RabbitMQ integration using php-amqplib for Laravel apps.

README 文档

README

A simple and lightweight RabbitMQ integration package for Laravel applications. This package provides an easy way to publish messages to RabbitMQ exchanges and consume messages from queues with built-in JSON schema validation.

What it does

This package gives you:

  • Message Publishing: Send messages to RabbitMQ exchanges with routing keys
  • Queue Consumption: Consume messages from queues with automatic acknowledgment
  • RPC Support: Handle request-response patterns
  • Schema Validation: Validate message payloads against JSON schemas
  • Console Commands: Easy-to-use Artisan commands for consuming queues

Installation

  1. Install the package via Composer:
composer require laravelmq/rabbit
  1. Publish the configuration file:
php artisan vendor:publish --tag=rabbitmq-config
  1. Add your RabbitMQ connection details to your .env file:
RABBITMQ_HOST=127.0.0.1
RABBITMQ_PORT=5672
RABBITMQ_USER=guest
RABBITMQ_PASSWORD=guest
RABBITMQ_VHOST=/

Basic Usage

Publishing Messages

use LaravelMq\Rabbit\Contracts\PublisherInterface;

class OrderController extends Controller
{
    public function store(Request $request, PublisherInterface $publisher)
    {
        $publisher->publish(
            'orders.exchange',
            ['order_id' => 123, 'status' => 'created'],
            'order.created',
            base_path('schemas/order.schema.json')
        );
    }
}

Creating Queue Handlers

Create a handler class that implements the QueueHandler interface:

<?php

namespace App\Handlers;

use LaravelMq\Rabbit\Contracts\QueueHandler;
use PhpAmqpLib\Message\AMQPMessage;

class OrderCreatedHandler implements QueueHandler
{
    public function queue(): string
    {
        return 'orders.queue';
    }

    public function schemaPath(): ?string
    {
        return resource_path('schemas/order-created.json');
    }

    public function handle(AMQPMessage $message): void
    {
        $payload = json_decode($message->getBody(), true);
        
        Order::create($payload);
    }
    
    public function mode(): string
    {
        return 'rpc';
    }
}

Consuming Queues

Use the Artisan command to start consuming messages:

php artisan rabbitmq:consume

php artisan rabbitmq:consume --queue=orders.queue,notifications.queue

php artisan rabbitmq:consume --mode=rpc

统计信息

  • 总下载量: 587
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-06-26