当前位置:   article > 正文

解决:Rabbitmq 消息队列阻塞的问题_rabbitmq 发送消息阻塞

rabbitmq 发送消息阻塞

接收消息的正确代码

  1. /**
  2. * 接收消息
  3. */
  4. override fun receiveMessage(queue: String, onMessageReceiveListener: OnMessageReceiveListener) {
  5. if (!ensureChannelOpen()) return
  6. try {
  7. val consumer = object : DefaultConsumer(mChannel) {
  8. override fun handleDelivery(consumerTag: String?, envelope: Envelope?, properties: AMQP.BasicProperties?, body: ByteArray?) {
  9. if (body != null) {
  10. onMessageReceiveListener.receivedMessage(String(body, Charsets.UTF_8))
  11. mChannel?.basicAck(envelope?.deliveryTag ?: 0L, false)
  12. }
  13. }
  14. }
  15. mChannel?.basicConsume(queue, false,"xtsf_"+DataHelper.getUserId(), consumer)
  16. } catch (e: Exception) {
  17. Log.d(TAG, Log.getStackTraceString(e))
  18. }
  19. }

这里之前一直是收到消息但是basicAck调用之后没有让服务器删消息  原因就是  basicConsume,方法的第三个参数必须设值

而且最好是每个消费者不同,否则,就算调用basicAck也没用,服务器不会删消息

参考官方文档,谷歌翻译一波绝对受益匪浅https://www.rabbitmq.com/api-guide.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/603359
推荐阅读
相关标签
  

闽ICP备14008679号