问一下,web项目里要加RabbitMQ消费者监听代码,改怎么加啊。现在我的问题是只有主动去调用消费者的代码才会收到发布的消息

img


这是我现在的做法,用while一直死循环,不然没法接收,因为我们系统并发在一万左右,一个并发就开起一个线程去执行这个死循环,这样太耗性能了,请问还有更好的方法嘛

  consumer = new EventingBasicConsumer(channel);
 consumer.Received += (model, ea) =>{自己的处理}

具体的不多赘述,知道EventingBasicConsumer 就可以自己搜索了
区别:你的代码是短连接,主动去broke查询是否有新的,没新的时候是异步阻塞的,一般情况是后续同步处理,处理完一个再拿下一个
event是长连接推送的,有消息就推送的,当然就和你点击鼠标按钮一样效果,看你自己能不能处理连续点击100次了,这个反而更考功力(ps:貌似在需要ack的时候还只能用同步的,因为我好像见过很多人问rabiitmq在ack回复的时候报“消息索引不匹配”然后连接自动挂调的情况)

同问,没有使用spring那一套的东西不知道怎么去自动监听队列消费了。。找了好多资料都是main方法,无语了