【问题标题】:Is it okay to use one RabbitMQ channel for all goroutines? [closed]可以为所有 goroutine 使用一个 RabbitMQ 通道吗? [关闭]
【发布时间】:2019-06-27 11:12:41
【问题描述】:

我正在做一个消息发布者和一个接收到/来自rabbitmq队列的消息。 我打算使用一个rabbitmq 通道来发布消息和一个用于获取,但我也希望我的代码是异步的,每个多个goroutine 使用一个rabbitmq 通道是否正确?

【问题讨论】:

  • Channels 用于 goroutine 之间的通信。它们在单个 goroutine 中没有意义。所以是的,当然没关系。
  • @Peter 我不是关于 golang 频道,而是关于 rabbitmq 频道

标签: go rabbitmq amqp channel goroutine


【解决方案1】:

我不是 golang-guy,因为我每天都使用带有 .Net 驱动程序的 RabbitMq; .Net driver channels(封装与队列/交换和消息发布/订阅交互的抽象)与golang RabbitMq channels非常相似,所以我认为我的回答可以帮助你. 虽然 connections 在设计上是 tread safe 并且应该在线程之间共享,但 channels 不是:所以,如果可以运行不同的异步 goroutines在不同的线程中(这取决于你:我不知道 golang 运行时是如何工作的)你不应该在它们之间共享相同的通道实例。 我希望这可以帮助你。

【讨论】:

    猜你喜欢
    • 2021-07-07
    • 2014-03-16
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 2019-05-09
    • 2021-10-29
    • 2020-08-02
    • 2015-06-03
    相关资源
    最近更新 更多