国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

webman如何使用stomp隊(duì)列插件操作rabbimq

ysian

問題描述

1.首先在rabbmitmq增加一個(gè)名為demo的交換機(jī)
截圖
2.然后增加一個(gè)名為demo_test的隊(duì)列
截圖
3.隊(duì)列與交換機(jī)綁定,路由鍵隨便寫的,與隊(duì)列名一樣
截圖
4.webman安裝
composer require teamones/stomp-queue

5.在config增加stomp配置
截圖
6.投遞消息
截圖
7.消費(fèi)位置
截圖
8.
截圖

改了端口之后:
截圖
按照destination增加了名為default.demo的交換機(jī)和名為default.demo_test的隊(duì)列,然后倆者根據(jù)
路由鍵default.demo_test進(jìn)行了綁定
截圖
截圖

問題:這一頓操作下來,消息是投遞成功了,但是消費(fèi)者沒有觸發(fā),請(qǐng)問是queue/stomp/demo.php的代碼有問題,還是觸發(fā)消費(fèi)者還需要其他的一些操作,亦或者我手動(dòng)創(chuàng)建的交換機(jī),隊(duì)列,路由這一環(huán)節(jié)有問題?

2118 4 1
4個(gè)回答

latin

rabbitmq 應(yīng)該要安裝stomp插件才能用stomp,具體百度下 rabbitmq stomp

  • ysian 2022-11-27

    我這邊是已經(jīng)開啟的,rabbitmq-plugins enable rabbitmq_stomp; 不知道是不是流程上的錯(cuò)誤,還是代碼投遞的問題或者是配置上寫錯(cuò)了; 網(wǎng)上搜了下,幾乎沒有關(guān)于webman使用stomp操作rabbmit的的話題

抽不完的寂寞

https://www.rabbitmq.com/stomp.html
http://m.wtbis.cn/plugin/13#%E9%A1%B9%E7%9B%AE%E5%9C%B0%E5%9D%80
按照手冊(cè)stomp應(yīng)該連 61613 端口,你可能連錯(cuò)了端口了

  • ysian 2022-11-27

    改了端口能夠投遞消息了,但是消費(fèi)者沒有觸發(fā); 請(qǐng)問是queue/stomp/demo.php的示例不對(duì)嗎?還是說觸發(fā)消費(fèi)者還需要其它的一些流程

抽不完的寂寞

我弄了個(gè)新的ubuntu服務(wù)器試了下,很順利就通了
1、安裝rabbitmq-server,apt-get install rabbitmq-server
2、啟用stomp,rabbitmq-plugins enable rabbitmq_stomp
3、按照手冊(cè)安裝webman/stomp,composer require webman/stomp
4、按照手冊(cè)新建控制器投遞消息

<?php
namespace app\controller;

use support\Request;
use Webman\Stomp\Client;

class Index
{
    public function queue(Request $request)
    {
        // 隊(duì)列
        $queue = 'examples';
        // 數(shù)據(jù)(傳遞數(shù)組時(shí)需要自行序列化,比如使用json_encode,serialize等)
        $data = json_encode(['to' => 'tom@gmail.com', 'content' => 'hello']);
        // 執(zhí)行投遞
        Client::send($queue, $data);

        return response('redis queue test');
    }

}

5、按照手冊(cè)新建消費(fèi)者消費(fèi)消息

<?php
namespace app\queue\stomp;

use Workerman\Stomp\AckResolver;
use Webman\Stomp\Consumer;

class MyMailSend implements Consumer
{
    // 隊(duì)列名
    public $queue = 'examples';

    // 連接名,對(duì)應(yīng) stomp.php 里的連接`
    public $connection = 'default';

    // 值為 client 時(shí)需要調(diào)用$ack_resolver->ack()告訴服務(wù)端已經(jīng)成功消費(fèi)
    // 值為 auto   時(shí)無需調(diào)用$ack_resolver->ack()
    public $ack = 'auto';

    // 消費(fèi)
    public function consume($data, AckResolver $ack_resolver = null)
    {
        // 如果是數(shù)據(jù)是數(shù)組,需要自行反序列化
        var_export(json_decode($data, true)); // 輸出 ['to' => 'tom@gmail.com', 'content' => 'hello']
        // 告訴服務(wù)端,已經(jīng)成功消費(fèi)
        $ack_resolver->ack(); // ack為 auto時(shí)可以省略此調(diào)用
    }
}

6、啟動(dòng)workerman

7、訪問控制器http://127.0.0.1:8787/index/queue,

8、終端顯示消費(fèi)成功
截圖

以上rabbitmq除了apt-get install rabbitmq-server rabbitmq-plugins enable rabbitmq_stomp 2句命令,什么都沒設(shè)置,代碼完全照抄手冊(cè),一次成功

  • ysian 2022-11-27

    你能配置一下延時(shí)隊(duì)列嗎? 我剛開始就沒走普通的隊(duì)列;

  • ysian 2022-11-27

    http://m.wtbis.cn/q/9746, 這邊是我走延時(shí)隊(duì)列的流程,走了一天,沒有跑通,不知道該怎樣調(diào)用消費(fèi)者去消費(fèi)

  • 抽不完的寂寞 2022-11-27

    接著上面的步驟,增加了如下操作
    1、下載組件 rabbitmq_delayed_message_exchange/usr/lib/rabbitmq/lib/rabbitmq_server-3.8.2/plugins (我本地目錄是這個(gè),各個(gè)系統(tǒng)可能不一樣)
    2、執(zhí)行 rabbitmq-plugins enable rabbitmq_delayed_message_exchange
    3、按照手冊(cè)安裝 composer require teamones/stomp-queue
    4、重啟rabbitmq和webman
    5、訪問 http://127.0.0.1:8787/index/queue 得到如下結(jié)果
    截圖

    可能是 teamones/stomp-queue 自帶什么設(shè)置,和前面的截圖比較調(diào)試信息沒了,但是確實(shí)消費(fèi)了

  • ysian 2022-11-27

    能讓我看下你stomp.php是怎樣配置的嗎?你把密碼去掉; 另外需要添加交換機(jī)和隊(duì)列嗎?

  • 抽不完的寂寞 2022-11-27

    就是手冊(cè)的配置
    截圖
    config/stomp.php

    截圖
    config/plugin/webman/stomp/stomp.php

    有2個(gè)配置配置文件,我不清楚哪個(gè)配置是生效的。config/plugin/webman/stomp/stomp.php是自動(dòng)生成的,config/stomp.php是執(zhí)行完composer require teamones/stomp-queue后按照手冊(cè)加的。

    rabbitmq只執(zhí)行過rabbitmq-plugins enable rabbitmq_stomp rabbitmq-plugins enable rabbitmq_delayed_message_exchange 沒有做過其他配置

  • ysian 2022-11-27

    你的Client::send($queue, $data,10); 后面加上秒數(shù)了嗎? 沒加的話走的是第一種,加上的話會(huì)報(bào)錯(cuò)

  • walkor 2022-11-28

    teamones/stomp-queue 是第三方的,文檔可能過期了,文檔先暫時(shí)隱藏。

    rabbitmq延遲隊(duì)列服務(wù)端設(shè)置參考文檔 https://blog.rabbitmq.com/posts/2015/04/scheduling-messages-with-rabbitmq
    按照文檔,延遲時(shí)間可以通過header傳遞,

    Client::send($queue, $data, ['x-delay' => 10*1000]);
  • ysian 2022-11-28

    這個(gè)stomp總感覺有點(diǎn)不穩(wěn)定,可能是我不會(huì)使用的原因;

ysian

截圖
stomp插件有時(shí)候會(huì)丟失消息,如圖所示,生產(chǎn)了,確沒有消費(fèi), 還有一個(gè)問題,重啟rabbitmq后,所有的消息都會(huì)丟失,沒有持久化,不知道什么原因

  • walkor 2022-11-28

    這個(gè)很多人在用了,沒有反饋過丟消息問題。
    有可能是服務(wù)端設(shè)置問題,比如消息重復(fù)就保留一條。
    關(guān)于rabbitmq持久化需要看下rabbitmq文檔,設(shè)置成持久化存儲(chǔ)

  • chaz6chez 2022-11-29

    stomp主要用于websocket的發(fā)布訂閱,并不是一個(gè)完整的消費(fèi)協(xié)議,不保證消息的到達(dá)率,stomp的初衷是為了實(shí)現(xiàn)C/S的發(fā)布訂閱模型,而不是用于消費(fèi)隊(duì)列的實(shí)現(xiàn),如果使用場(chǎng)景是消費(fèi)隊(duì)列場(chǎng)景,請(qǐng)使用標(biāo)準(zhǔn)AMQP協(xié)議!

年代過于久遠(yuǎn),無法發(fā)表回答
??