微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用者失败时关闭amqp.Channel没有响应

如何解决使用者失败时关闭amqp.Channel没有响应

我使用https://github.com/NeowayLabs/wabbit/
当amqp.Channel在错误的try频道后关闭时,说明我们的频道没有监听,功能没有响应。

我的代码

    <video src="https://res.cloudinary.com/quentindigital/video/upload/v1598625047/day20-challenge-quentinrenaux_ylqkl7.mp4" id="theplayer" autoplay="autoplay" loop="" muted="muted">
    </video>

<script>
document.querySelector("input").onclick = function() {
  var states = {"Volume OFF": "Volume ON","Volume ON": "Volume OFF"};
  this.value = states[this.value];

  var video = document.getElementById("theplayer");
  video.muted = !video.muted;
}
</script>

someFunc从未响应错误,但我想处理使用者错误

解决方法

someFunc永远不会响应,因为它被挂在defer代码中。

someFunc到达return err行时,它将尝试运行在函数开头设置的defer语句。它尝试的第一个是defer channel.Close()

问题似乎出在wabbit库中的此块:https://github.com/NeowayLabs/wabbit/blob/d8bc549279ecd80204a8a83a868a14fdd81d1a1b/amqptest/server/channel.go#L315-L317

尽管不确定,但我认为写入consumer.done通道是一项阻塞操作,因为该通道未缓冲且没有接收器。参见:https://gobyexample.com/non-blocking-channel-operations,以了解更多信息。

我在本地运行时注释掉了该代码块,发现其余代码按预期运行,最终导致panic: Unknown queue 'queue'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。