1.服务提供方发送消息,消费方接受消息,其中有一个ack机制:服务提供方发送消息之后,当消费方消费的时候,如果在这个过程中发生了异常,autoack为true的时候,消息照常被消费,但消费方并未完成消息处理,因此,我们需要将autoack设置为false,这样在处理消息的过程中如果发生异常,消息会进入待处理中,即unack,过程结束之后rabitmp消息会进行回滚,消息重新回到消息队列中,方法如下:
//消息处理中手动进行ack channel.basicAck(envelope.getdeliveryTag(),false)
//监听消息队列,第二个参数为fasle,手动进行ack
channel.basicConsume(QUEUE_NAME,fasle,consumer);
2.补充windows下安装的一些注意点:
安装没什么大问题,下载erlang.exe和rabbitmq.exe,双击一直下一步,erlang安装完之后系统会产生一个环境变量ERLANG_HOME:D:\java\erl10.2,rabbitmq的指令都需要再这个目录下运行D:\java\rabitmq\rabbitmq_server-3.7.9\sbin,目录栏输入cmd进入就可以输入命令了,有个需要注意的就是rabbitmq-service start需要用管理员身份开启cmd,再切到安装目录运行,显示--
请求的服务已经启动。
请键入 NET HELPMSG 2182 以获得更多的帮助。代表成功;
还有一些必要的指令:
启动监控管理器:rabbitmq-plugins enable rabbitmq_management
关闭监控管理器:rabbitmq-plugins disable rabbitmq_management
启动rabbitmq:rabbitmq-service start
关闭rabbitmq:rabbitmq-service stop
查看所有的队列:rabbitmqctl l