1.首先在rabbmitmq增加一个名为demo的交换机
2.然后增加一个名为demo_test的队列
3.队列与交换机绑定,路由键随便写的,与队列名一样
4.webman安装
composer require teamones/stomp-queue
5.在config增加stomp配置
6.投递消息
7.消费位置
8.
改了端口之后:
按照destination增加了名为default.demo的交换机和名为default.demo_test的队列,然后俩者根据
路由键default.demo_test进行了绑定
问题:这一顿操作下来,消息是投递成功了,但是消费者没有触发,请问是queue/stomp/demo.php的代码有问题,还是触发消费者还需要其他的一些操作,亦或者我手动创建的交换机,队列,路由这一环节有问题?
rabbitmq 应该要安装stomp插件才能用stomp,具体百度下 rabbitmq stomp
我这边是已经开启的,rabbitmq-plugins enable rabbitmq_stomp; 不知道是不是流程上的错误,还是代码投递的问题或者是配置上写错了; 网上搜了下,几乎没有关于webman使用stomp操作rabbmit的的话题
https://www.rabbitmq.com/stomp.html
https://www.workerman.net/plugin/13#%E9%A1%B9%E7%9B%AE%E5%9C%B0%E5%9D%80
按照手册stomp应该连 61613 端口,你可能连错了端口了
改了端口能够投递消息了,但是消费者没有触发; 请问是queue/stomp/demo.php的示例不对吗?还是说触发消费者还需要其它的一些流程
我弄了个新的ubuntu服务器试了下,很顺利就通了
1、安装rabbitmq-server,
apt-get install rabbitmq-server
2、启用stomp,
rabbitmq-plugins enable rabbitmq_stomp
3、按照手册安装
webman/stomp
,composer require webman/stomp
4、按照手册新建控制器投递消息
5、按照手册新建消费者消费消息
6、启动workerman
7、访问控制器
http://127.0.0.1:8787/index/queue
,8、终端显示消费成功
以上rabbitmq除了
apt-get install rabbitmq-server
rabbitmq-plugins enable rabbitmq_stomp
2句命令,什么都没设置,代码完全照抄手册,一次成功你能配置一下延时队列吗? 我刚开始就没走普通的队列;
https://www.workerman.net/q/9746, 这边是我走延时队列的流程,走了一天,没有跑通,不知道该怎样调用消费者去消费
接着上面的步骤,增加了如下操作
1、下载组件 rabbitmq_delayed_message_exchange 到
/usr/lib/rabbitmq/lib/rabbitmq_server-3.8.2/plugins
(我本地目录是这个,各个系统可能不一样)2、执行
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
3、按照手册安装
composer require teamones/stomp-queue
4、重启rabbitmq和webman
5、访问 http://127.0.0.1:8787/index/queue 得到如下结果
可能是
teamones/stomp-queue
自带什么设置,和前面的截图比较调试信息没了,但是确实消费了能让我看下你stomp.php是怎样配置的吗?你把密码去掉; 另外需要添加交换机和队列吗?
就是手册的配置
config/stomp.php
config/plugin/webman/stomp/stomp.php
有2个配置配置文件,我不清楚哪个配置是生效的。config/plugin/webman/stomp/stomp.php是自动生成的,config/stomp.php是执行完
composer require teamones/stomp-queue
后按照手册加的。rabbitmq只执行过
rabbitmq-plugins enable rabbitmq_stomp
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
没有做过其他配置你的Client::send($queue, $data,10); 后面加上秒数了吗? 没加的话走的是第一种,加上的话会报错
teamones/stomp-queue
是第三方的,文档可能过期了,文档先暂时隐藏。rabbitmq延迟队列服务端设置参考文档 https://blog.rabbitmq.com/posts/2015/04/scheduling-messages-with-rabbitmq
按照文档,延迟时间可以通过header传递,
这个stomp总感觉有点不稳定,可能是我不会使用的原因;
stomp插件有时候会丢失消息,如图所示,生产了,确没有消费, 还有一个问题,重启rabbitmq后,所有的消息都会丢失,没有持久化,不知道什么原因
这个很多人在用了,没有反馈过丢消息问题。
有可能是服务端设置问题,比如消息重复就保留一条。
关于rabbitmq持久化需要看下rabbitmq文档,设置成持久化存储
stomp主要用于websocket的发布订阅,并不是一个完整的消费协议,不保证消息的到达率,stomp的初衷是为了实现C/S的发布订阅模型,而不是用于消费队列的实现,如果使用场景是消费队列场景,请使用标准AMQP协议!