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 里面找对应消费者 去关闭也行,不过会继续连接上。