承接 usmonaliyev/laravel-simple-rabbitmq 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

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

usmonaliyev/laravel-simple-rabbitmq

最新稳定版本:1.2.0

Composer 安装命令:

composer require usmonaliyev/laravel-simple-rabbitmq

包简介

This package provides simple usage of rabbitmq.

README 文档

README

laravel-simple-rabbitmq

The package for simplified RabbitMQ usage, supporting multiple connections, easy publishing, and consumer mode.

Documentation

Key Features

  • Multiple Connections: Effortlessly manage multiple RabbitMQ connections within the same application.

  • Exchange supporting: You can push messages to exchanges

  • Message Publishing: Easily publish messages to queues and exchange with a fluent, chainable syntax.

  • Consumer Mode: Enable consumers to receive and process messages from queues in real time.

  • Manage queues and exchanges in config file: You can register queues and exchanges in config/simple-mq.php and define them in easy way which is amqp:define-queues command.

Installation

You can install the package via composer:

composer require usmonaliyev/laravel-simple-rabbitmq

Next step you must publish config and action register files:

php artisan vendor:publish --provider="Usmonaliyev\SimpleRabbit\SimpleRabbitMQServiceProvider"

As a result of this command, you will have a configuration file config/simple-mq.php and a registry file routes/amqp-handlers.php.

The config/simple-mq.php config file contains RabbitMQ connections with credentials, queues, default connection and default queue.

The next stage is configure .env file.

SIMPLE_MQ_CONNECTION=
SIMPLE_MQ_QUEUE=

SIMPLE_MQ_HOST=
SIMPLE_MQ_PORT=
SIMPLE_MQ_USERNAME=
SIMPLE_MQ_PASSWORD=

Usage

The package can publish and consume messages

Publishing

You can publish a message with default connection and default queue:

<?php

use Illuminate\Http\Request;
use Usmonaliyev\SimpleRabbit\Facades\SimpleMQ;

class FooController
{
    public function createFoo(Request $request)
    {
        // Something..
        
        SimpleMQ::queue('foo-queue')
          ->setBody(['name' => 'First Foo'])
          ->handler('create-foo')
          ->publish();
          
        return response()->json(['message' => 'OK']);
    }
}

Also, exchange function publish message to RabbitMq exchange:

<?php

namespace App\Https\Controllers;

use Illuminate\Http\Request;
use Usmonaliyev\SimpleRabbit\Facades\SimpleMQ;

class FooController
{
    public function createFoo(Request $request)
    {
        // Something..
        
        SimpleMQ::exchange('foo-exchange')
          ->setBody(['name' => 'First Foo'])
          ->setRoutingKey('foo.bar')
          ->handler('create-foo')
          ->publish();
          
        return response()->json(['message' => 'OK']);
    }
}

If you have multiply connection to RabbitMq, you can publish a message with connection method.

<?php

namespace App\Https\Controllers;

use Illuminate\Http\Request;
use Usmonaliyev\SimpleRabbit\Facades\SimpleMQ;

class FooController
{
    public function createFoo(Request $request)
    {
        // Something..
        
        SimpleMQ::connection('foo-connection')
          ->queue('foo-queue')
          ->setBody(['name' => 'First Foo'])
          ->handler('create-foo')
          ->publish();
          
        return response()->json(['message' => 'OK']);
    }
}

Consuming

Create app/AMQP/Handlers folder and create your handler classes.

For example:

<?php

namespace App\AMQP\Handlers;

use Usmonaliyev\SimpleRabbit\MQ\Message;

class FooHandler
{
    public function handle(Message $message)
    {
        // do something...
        
        $message->ack();
        
        return ['ok' => true];
    }
}

Don't forget acknowledge message end of process, else consumer does not accept next message.

Then register your handler in routes/amqp-handlers.php file.

<?php

use \App\AMQP\Handlers\FooHandler;
use \Usmonaliyev\SimpleRabbit\Facades\ActionMQ;

ActionMQ::register('create-foo', [FooHandler::class, 'handle']);

To consume messages use:

php artisan amqp:consume connection? queue?

The command requires two arguments which are connection and queue.
If you don't give them, command uses default connection and queue.

Contracts

We have a telegram group, you can join us.

Plans

  • Exchange configuration in config/simple-mq.php
  • Setup testing.

Testing

composer test

License

The MIT License.

统计信息

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

GitHub 信息

  • Stars: 76
  • Watchers: 2
  • Forks: 7
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-11-04