国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Hyperf使用RabbitMQ消息隊列

這篇具有很好參考價值的文章主要介紹了Hyperf使用RabbitMQ消息隊列。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

Hyperf連接使用RabbitMQ消息中間件

傳送門

  1. 使用Docker部署RabbitMQ,->傳送門<
  2. 使用Docker部署Hyperf,->傳送門-<

部署環(huán)境

安裝amqp擴(kuò)展
composer require hyperf/amqp
安裝command命令行擴(kuò)展
composer require hyperf/command
配置參數(shù)

假設(shè)已經(jīng)在rabbitmq設(shè)置了交換機(jī)exchange_test和隊列queue_test

新建 /config/autoload/amp.php配置文件,修改地址和用戶名密碼
<?php
return [
    'default' => [
        'host' => '127.0.0.1',//rabbitmq服務(wù)的地址
        'port' => 5672,
        'user' => 'user',
        'password' => '123456',
        'vhost' => '/',
        'concurrent' => [
            'limit' => 1,
        ],
        'pool' => [
            'connections' => 1,
        ],
        'params' => [
            'insist' => false,
            'login_method' => 'AMQPLAIN',
            'login_response' => null,
            'locale' => 'en_US',
            'connection_timeout' => 3.0,
            'read_write_timeout' => 6.0,
            'context' => null,
            'keepalive' => false,
            'heartbeat' => 3,
            'close_on_destruct' => false,
        ],
    ],
    'pool2' => [
        ...
    ]
];

生產(chǎn)數(shù)據(jù)

創(chuàng)建生產(chǎn)者中間件
php bin/hyperf.php gen:amqp-producer DemoProducer

exchange是交換機(jī),routingKey是隊列名

<?php
declare(strict_types=1);
namespace App\Amqp\Producers;
use Hyperf\Amqp\Annotation\Producer;
use Hyperf\Amqp\Message\ProducerMessage;

/**
 * @Producer(exchange="exchange_test", routingKey="queue_test")
 */
class DemoProducer extends ProducerMessage
{
    public function __construct($data)
    {
    	//將收到的數(shù)據(jù)加入隊列
        $this->plyload = $data;
    }
}
創(chuàng)建生產(chǎn)者腳本
php bin/hyperf.php gen:command FooCommand

代碼

<?php
declare(strict_types=1);
namespace App\Command;
use Hyperf\Command\Command as HyperfCommand;
use Hyperf\Command\Annotation\Command;
use Hyperf\Amqp\Producer;
use App\Amqp\Producers\DemoProducer;
use Hyperf\Utils\ApplicationContext;

/**
 * @Command
 */
class FooCommand extends HyperfCommand
{
    /**
     * 執(zhí)行的命令行
     *
     * @var string
     */
    protected $name = 'foo:command';
    public function handle()
    {
		//協(xié)程代碼,創(chuàng)建1000個協(xié)程分別處理
		$wg = new \Hyperf\Utils\WaitGroup();
		$wg->add(1000);// 計數(shù)器加1000
		for($i=0;$i<1000;$i++){
			// 創(chuàng)建協(xié)程$i
			co(function () use ($wg) {
		    	//amqp代碼,將數(shù)據(jù)加入生產(chǎn)者隊列
		        $message = new DemoProducer(['id'=>$i]);
				$producer = ApplicationContext::getContainer()->get(Producer::class);
				$result = $producer->produce($message);					    
			    // 計數(shù)器減一
			    $wg->done();
			});
		}
		// 等待所有協(xié)程運(yùn)行完成
		$wg->wait();
    }
}

調(diào)用命令行,來生產(chǎn)數(shù)據(jù)

php bin/hyperf.php foo:command

至此,進(jìn)入rabbitmq后臺,對應(yīng)的隊列里就會有數(shù)據(jù)。

消費(fèi)數(shù)據(jù)

創(chuàng)建消費(fèi)者中間件
php bin/hyperf.php gen:amqp-consumer DemoConsumer

代碼解釋如上,多的queue也是隊列名,num是進(jìn)程數(shù)

<?php
declare(strict_types=1);
namespace App\Amqp\Consumers;
use Hyperf\Amqp\Annotation\Consumer;
use Hyperf\Amqp\Message\ConsumerMessage;
use Hyperf\Amqp\Result;
use PhpAmqpLib\Message\AMQPMessage;
#[Consumer(exchange: "hyperf", routingKey: "hyperf", queue: "hyperf", nums: 1)]
class DemoConsumer extends ConsumerMessage
{
    public function consumeMessage($data, AMQPMessage $message): string
    {
        print_r($data);
        return Result::ACK;
    }
}

重啟框架會自動調(diào)用消費(fèi)者

php bin/hyperf.php start

hyperf使用rabbitmq,amqp,hyperf,docker,rabbitmq,分布式
原創(chuàng)碼字不易,喜歡請收藏關(guān)注

部分參考自:https://www.bilibili.com/video/BV1de4y1E7Ya/?vd_source=36102b089bcd7ff8177499ba833633e0文章來源地址http://www.zghlxwxcb.cn/news/detail-548506.html

到了這里,關(guān)于Hyperf使用RabbitMQ消息隊列的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • node-red:使用node-red-contrib-amqp節(jié)點(diǎn),實(shí)現(xiàn)與RabbitMQ服務(wù)器(AMQP)的消息傳遞

    node-red:使用node-red-contrib-amqp節(jié)點(diǎn),實(shí)現(xiàn)與RabbitMQ服務(wù)器(AMQP)的消息傳遞

    回到目錄 ??AMQP,即 Advanced Message Queuing Protocol(高級消息隊列協(xié)議),是一個網(wǎng)絡(luò)協(xié)議,是應(yīng)用層協(xié)議的一個開放標(biāo)準(zhǔn),為面向消息的中間件設(shè)計?;诖藚f(xié)議的客戶端與消息中間件可傳遞消息,并不受客戶端/中間件不同產(chǎn)品,不同的開發(fā)語言等條件的限制。 ?? AMQP的主

    2024年02月03日
    瀏覽(19)
  • docker使用Dockerfile制做容器(以hyperf為列,開機(jī)啟動)

    1、Dockerfile文件 1-1、執(zhí)行命令生成hyperf:latest容器(文件名是Dockerfile可以省略,如果是其它文件名需要寫上docker build –f dockerfile文件路徑 –t 鏡像名稱:版本) 2、start.sh腳本 3、啟動,重新啟動也會執(zhí)行腳本,后面加上/data/start.sh(啟動執(zhí)行腳本,重新啟動也會執(zhí)行腳本)

    2024年01月21日
    瀏覽(58)
  • RabbitMQ(基于AMQP的開源消息代理軟件)

    RabbitMQ(基于AMQP的開源消息代理軟件)

    (1)介紹 AMQP,即Advanced Message Queuing Protocol,一個提供統(tǒng)一消息服務(wù)的應(yīng)用層標(biāo)準(zhǔn) 高級消息隊列協(xié)議 ,是應(yīng)用層協(xié)議的一個開放標(biāo)準(zhǔn),為面向消息的中間件設(shè)計?;诖藚f(xié)議的客戶端與消息中間件可傳遞消息,并不受客戶端/中間件不同產(chǎn)品,不同的開發(fā)語言等條件的限制。

    2024年02月02日
    瀏覽(21)
  • RabbitMQ實(shí)現(xiàn)延遲消息,RabbitMQ使用死信隊列實(shí)現(xiàn)延遲消息,RabbitMQ延時隊列插件

    RabbitMQ實(shí)現(xiàn)延遲消息,RabbitMQ使用死信隊列實(shí)現(xiàn)延遲消息,RabbitMQ延時隊列插件

    假設(shè)有一個業(yè)務(wù)場景:超過30分鐘未付款的訂單自動關(guān)閉,這個功能應(yīng)該怎么實(shí)現(xiàn)? RabbitMQ使用死信隊列,可以實(shí)現(xiàn)消息的延遲接收。 隊列有一個消息過期屬性。就像豐巢超過24小時就收費(fèi)一樣,通過設(shè)置這個屬性,超過了指定事件的消息將會被丟棄。 這個屬性交:x-message

    2024年02月13日
    瀏覽(104)
  • 【云原生 | 27】Docker部署運(yùn)行開源消息隊列實(shí)現(xiàn)RabbitMQ

    【云原生 | 27】Docker部署運(yùn)行開源消息隊列實(shí)現(xiàn)RabbitMQ

    作者簡介:??云計算領(lǐng)域優(yōu)質(zhì)創(chuàng)作者??新星計劃第三季python賽道第一名???阿里云ACE認(rèn)證高級工程師?? ??個人主頁:小鵬linux ??個人社區(qū):小鵬linux(個人社區(qū))歡迎您的加入! 目錄 1. 關(guān)于MQ 1.1?什么是MQ? 1.2 MQ是干什么用的?? 1.3 MQ衡量標(biāo)準(zhǔn)? 1.4 主流競品分析? 2. 關(guān)

    2024年01月20日
    瀏覽(19)
  • 【RabbitMQ】RabbitMQ 消息的堆積問題 —— 使用惰性隊列解決消息的堆積問題

    【RabbitMQ】RabbitMQ 消息的堆積問題 —— 使用惰性隊列解決消息的堆積問題

    消息的堆積問題是指在消息隊列系統(tǒng)中,當(dāng)生產(chǎn)者以較快的速度發(fā)送消息,而消費(fèi)者處理消息的速度較慢,導(dǎo)致消息在隊列中積累并達(dá)到隊列的存儲上限。在這種情況下,最早被發(fā)送的消息可能會在隊列中滯留較長時間,直到超過隊列的容量上限。當(dāng)隊列已滿且沒有更多的可

    2024年02月05日
    瀏覽(19)
  • RabbitMQ 消息隊列使用

    RabbitMQ 消息隊列使用

    同步調(diào)用優(yōu)點(diǎn): 時效性強(qiáng),立即得到結(jié)果 缺點(diǎn): 耦合度高 新業(yè)務(wù)新需求到來時,需要修改代碼 性能和吞吐能力下降 調(diào)用服務(wù)的響應(yīng)時間為所有服務(wù)的時間之和 資源浪費(fèi) 調(diào)用鏈中的服務(wù)在等待時不會釋放請求占用的資源 級聯(lián)失敗 一個服務(wù)執(zhí)行失敗會導(dǎo)致調(diào)用鏈后續(xù)所有服務(wù)失

    2024年01月21日
    瀏覽(15)
  • RabbitMQ-網(wǎng)頁使用消息隊列

    RabbitMQ-網(wǎng)頁使用消息隊列

    幾種模式 從最簡單的開始 添加完新的虛擬機(jī)可以看到,當(dāng)前admin用戶的主機(jī)訪問權(quán)限中新增的剛添加的環(huán)境 1.1查看交換機(jī) 交換機(jī)列表中自動新增了剛創(chuàng)建好的虛擬主機(jī)相關(guān)的預(yù)設(shè)交換機(jī)。一共7個。前面兩個 direct類型的交換機(jī),一個是(AMQP default)還有一個是amq.direct,它們

    2024年02月07日
    瀏覽(23)
  • Golang使用消息隊列(RabbitMQ)

    Golang使用消息隊列(RabbitMQ)

    最近在使用Golang做了一個網(wǎng)盤項(xiàng)目(類似百度網(wǎng)盤),這個網(wǎng)盤項(xiàng)目有一個功能描述如下:用戶會刪除一個文件到垃圾回收站,回收站的文件有一個時間期限,比如24h,24h后數(shù)據(jù)庫中記錄和oss中文件會被刪除,在之前的版本中,可以使用定時任務(wù)來檢查數(shù)據(jù)庫記錄中刪除時間

    2024年02月10日
    瀏覽(24)
  • 消息隊列RabbitMQ.01.基本使用

    消息隊列RabbitMQ.01.基本使用

    目錄 ?RabbitMQ的作用 Message queue 釋義 ?問題思考 ?存在的問題 優(yōu)化方案? 案例分析? 帶來的好處? 消息隊列特點(diǎn) ?Email郵件案例分析 Docker安裝部署RabbitMQ 1.下拉鏡像 2.運(yùn)行RabbitMQ ?3.打開防火墻端口號并重新運(yùn)行防火墻 4.容器啟動后,可以通過 docker logs 容器 查看日志 6.通過剛才

    2024年01月21日
    瀏覽(58)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包