相关疑难解决方法(0)

如何在rabbitmq中汇集频道?

我一直在尝试在线程之间共享连接,并且只在创建线程时打开通道,但经过更多的研究后,我想我也想尝试connection pooling.我怎么能在rabbitmq上这样做?或者这是我一般可以申请的一般概念吗?我的目标是生成X线程,然后让它们不必打开新的通道(这需要在客户端和服务器之间建立循环).

由于线程是他们自己的类,我不确定我是否需要将池放在生成线程的类本身或者它们去哪里?我也有多种类型的线程我想要在它们之间共享这些连接(不是只是一个).那可能吗?

为了给您一个大致的想法,这里是如何在rabbitmq中建立连接/渠道:

ConnectionFactory factory = new ConnectionFactory();
    factory.setHost("localhost");
    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();  //I want to share several of these between threads
Run Code Online (Sandbox Code Playgroud)

java multithreading rabbitmq

9
推荐指数
2
解决办法
6467
查看次数

RabbitMQ 中的一个通道 - 一个队列?

到目前为止,对于 RabbitMQ 中的单个队列,我使用了单个通道,但是现在我动态创建了多个队列,因此我是否必须为每个队列创建一个通道,或者一个通道可以从不同队列接收消息/向不同队列发送消息?

   # consuming
    for ch in items:
      channel1 = rconn.channel()
      channel1.queue_declare(queue=itm)
      channel1.basic_consume(some_callback, queue=itm, no_ack=True)
      channel1.start_consuming()


    # publishing
    for ch in items:
    # ....
      channel1.basic_publish(exchange="", routing_key=itm, body="fdsfds")
Run Code Online (Sandbox Code Playgroud)

python rabbitmq

6
推荐指数
1
解决办法
4534
查看次数

AMQP 中的通道和链接有什么区别?

我正在尝试了解 AMQP 协议的框架部分。我知道 AMQP 首先打开一个 TCP 连接,然后在该连接内使用多个通道来防止建立多个 TCP 连接的开销(这在这里有很好的解释)。现在我正在努力理解链接如何发挥作用。所以根据我的理解,它的工作原理如下:

  1. 在两个容器(基本上是两个程序)之间建立连接(大多数情况下是 TCP)
  2. 创建多个通道。它们不绑定到任何节点
  3. 会话结合了每个方向的两个通道,但仍然不绑定到任何节点
  4. “链接”将会话绑定到两端的两个节点

我的理解正确吗?既然已经有了渠道,为什么还需要“链接”的概念呢?为什么不直接让通道成为两个节点之间的连接呢?用简单的英语来说,频道和链接之间有什么区别?

微软表示:

通道是连接之上的单向出站虚拟传输路径。

链接是通过会话创建的通信路径,可以单向传输消息

这对我来说基本上是一样的。如果有人能用简单的术语解释频道、会话和链接之间的关系,我将非常高兴。

c# java network-programming amqp rabbitmq

3
推荐指数
1
解决办法
2086
查看次数

标签 统计

rabbitmq ×3

java ×2

amqp ×1

c# ×1

multithreading ×1

network-programming ×1

python ×1