【RabbitMQ】又一次遇到坑了,只是吐个槽和记录一下

    1.安装遇到的问题

    由于项目需要,所以考虑弄个消息队列,在MSMQ和RabbitMQ 中选择了后者,所以开始了安装

    网上找了一些教程,跟着安装后,发现 服务一直启动失败,报 那什么1067

    错误日志:RabbitMQ: Erlang machine stopped instantly (distribution name conflict?). The service is not restarted, ignoring OnFail option

    又搜了一些文章,跟着改 也没啥效果,说什么 盘符或者安装路径有中文,删除C:\Users\xxxxx\AppData\Roaming\RabbitMQ 文件夹,都不好使

    最后发现 真的是 计算机名称 是中文 所以启动不了,虽然百度搜的有看到说这个,但真的是坑爹

   2.消费者接收事件没有触发,从网上别人看到的代码(抄作业果然不行)

  using (var connection = factory.CreateConnection())
        {
            using (var channel = connection.CreateModel())
            {
                var consumer = new EventingBasicConsumer(channel);

                consumer.Received += (model, ea) =>
                {
                    var body = ea.Body;
                    var messageText = Encoding.UTF8.GetString(body);

                    //var message = JsonConvert.DeserializeObject<ICreateMessageDto>(messageText);

                    //channel.BasicAck(ea.DeliveryTag, true);
                };
                channel.BasicConsume("20-x:device-message", false, consumer);
            }
        }

原因:接收事件触发前  channel和connection 就被关闭了

解决:反正 不立马 关闭 就能 接受 到了

3.记录一些命令(也是网上直接抄来的,毕竟有用:来源

查看插件打开情况:rabbitmq-plugins list

启动监控管理器:rabbitmq-plugins enable rabbitmq_management

关闭监控管理器:rabbitmq-plugins disable rabbitmq_management

1、服务器启动与关闭

启动:service rabbitmq-server start

关闭:service rabbitmq-server stop

重启:service rabbitmq-server restart

启动rabbitmq:rabbitmq-service start

关闭rabbitmq:rabbitmq-service stop

关闭应用:rabbitmqctl stop_app

启动应用:rabbitmqctl start_app

查看所有的队列:rabbitmqctl list_queues

清除所有的队列:rabbitmqctl reset

查看用户:rabbitmqctl list_users

查看状态:rabbitmqctl status

查看集群状态:rabbitmqctl cluster_status

集群同步:

所有节点的值相同:/var/lib/rabbitmq/.erlang.cookie

加入集群:

host1和host2,在host2上操作

先停止:rabbitmqctl -n rabbit stop_app

加入:rabbitmqctl -n rabbit join_cluster rabbit@$rabbit_hostname1

再启动:rabbitmqctl -n rabbit start_app

2、用户管理

新增 rabbitmqctl add_user admin admin

删除 rabbitmqctl delete_user admin

修改 rabbitmqctl change_password admin admin123

用户列表 rabbitmqctl  list_users

设置角色 rabbitmqctl set_user_tags admin administrator monitoring policymaker management

设置用户权限 rabbitmqctl  set_permissions  -p  VHostPath  admin  ConfP  WriteP  ReadP

查询所有权限 rabbitmqctl  list_permissions  [-p  VHostPath]

指定用户权限 rabbitmqctl  list_user_permissions  admin

清除用户权限 rabbitmqctl  clear_permissions  [-p VHostPath]  admin

多应用使用

rabbitmqctl -n rabbit_ceilometer 命令

4.查看 unacked 的 消费者 以及 断开消费者连接

 今天收到用户反馈有阻塞,排查发现 有几个unacked ,程序判断 队列没有消费完,所以没有往下走。所以需要排查是哪个消费者出了问题。

 

研究下RabbitMQ后台,发现这里可以查看 unacked是谁。这样只要断开连接就可以重新把数据弄回队列了。

至于断开,可以手动关闭消费者,没办法手动关闭的情况在  Connections 里面找对应消费者 去关闭也行,不过会继续连接上。

 


 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沃祐进先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值