定制 smskin/laravel-rabbitmq 二次开发

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

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

smskin/laravel-rabbitmq

最新稳定版本:1.0.3

Composer 安装命令:

composer require smskin/laravel-rabbitmq

包简介

RabbitMQ provider for laravel projects

README 文档

README

This library is based on the smskin/laravel-daemon-supervisor and https://packagist.org/packages/php-amqplib/php-amqplib libraries.

The library allows you to configure, listen to RabbitMQ queues, and send messages to the broker's exchange.

Installation

composer required smskin/laravel-rabbitmq
php artisan vendor:publish --provider="SMSkin\LaravelRabbitMq\Providers\ServiceProvider"

Configuration

Settings are located in the config/rabbitmq.php file.

Connection Settings

RabbitMQ connection settings.

Sharding - Load Balancing

Settings for distributing messages across incoming message handler processes.

strategy - sharding strategy.

Available strategies:

  • ONE_SHARD - one process listens to all messages
  • EVERY_CONSUMER - each consumer has a separate process
  • MAX_LIMIT - launches max_shards processes, messages are distributed evenly among them

Exchanges

Registration of RabbitMQ exchanges.

Exchange Bindings

Registration of bindings between Exchanges.

Queues

Registration of queues.

Queue Bindings

Registration of bindings from Exchanges to queues.

Consumers

Registration of incoming message handlers.

Structure

Exchange

Class inherits from SMSkin\LaravelRabbitMq\Entities\Exchange.

Exchange Binding

Allows routing messages from one exchange to others.

Class inherits from SMSkin\LaravelRabbitMq\Entities\Binding.

Refer to the base class for configuration rules as per AMQP documentation.

Methods to implement:

  • public function getSource(): string - Returns the source Exchange name.
  • public function getDestination(): string - Returns the destination Exchange name.

Refer to the base class for configuration rules as per AMQP documentation.

Queue

Class inherits from SMSkin\LaravelRabbitMq\Entities\Queue.

Refer to the base class for configuration rules as per AMQP documentation.

Queue Binding

Class inherits from SMSkin\LaravelRabbitMq\Entities\Binding.

Allows routing messages from an Exchange to a queue.

Methods to implement:

  • public function getSource(): string - Returns the source Exchange name.
  • public function getDestination(): string - Returns the destination Queue name.

Refer to the base class for configuration rules as per AMQP documentation.

Consumer

Incoming message handler. Class inherits from SMSkin\LaravelRabbitMq\Entities\Consumer.

Methods to implement:

  • public function getQueue(): string - Returns the name of the queue this handler listens to.

  • public function handleMessage(AMQPMessage $message): void - Handles the message.

  • The handleMessage(AMQPMessage $message) method should end with marking the message as processed ($message->ack();).

Aim for the handleMessage(AMQPMessage $message) method to execute in minimal time to avoid becoming a bottleneck in queue processing.

Logic

This library includes 2 artisan commands:

  • rmq:supervisor - Master process
  • rmq:worker - Worker process

When running rmq:supervisor, the library configures RabbitMQ according to the configuration file and starts worker processes based on the selected strategy (rabbitmq.sharding.strategy).

When a message appears in the listening queue, the handleMessage(AMQPMessage $message) method of the subscribed handler is triggered.

Usage in Laravel

Add the command php artisan rmq:supervisor to your supervisor configuration. Upon starting, supervisor will launch the master process.

[program:laravel-rmq-supervisor]
process_name=%(program_name)s
command=php /var/www/html/artisan rmq:supervisor
autostart=true
autorestart=true
user=www-data
group=www-data
redirect_stderr=true
stdout_logfile=/dev/stdout
stderr_logfile=/dev/stderr
stdout_maxbytes=0
stderr_maxbytes=0
stdout_logfile_maxbytes = 0
stderr_logfile_maxbytes = 0
startsecs=0
stopwaitsecs=3600

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-05-28

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固