代理内部流量到Azure Service Bus



我要实现的是内部网络中的兔子客户端之间的互操作性,而Azure服务总线消费者则运行Azure。

RabbitMQ客户以及Azure Service Bus消费者都需要发布和订阅 - 因此我需要某种"双向代理"。我想实现的目标:

                                      +
                    Internal network  |  Azure
                                      |
                                      |
+--------+                            |                               +----------+
| Client +---+                        |                           +---+ Consumer |
+--------+   |                        |                           |   +----------+
             |                        |                           |
             | +-----------------+    |    +-------------------+  |
             +-+ RabbitMQ Broker +---------+ Azure Service Bus +--+
             | +-----------------+    |    +-------------------+  |
             |                        |                           |
+--------+   |                        |                           |   +----------+
| Client +---+                        |                           +---+ Consumer |
+--------+                            |                               +----------+
                                      |
                                      |
                                      |
                                      +

afaik,RabbitMQ经纪人和Azure Service Bus都可以进行AMQP 1.0。我已经查看了兔子铲插件,但是我认为这只会处理从内部客户到Azure的发布消息,并且不允许客户订阅Azure Consumers发布的消息?还是我错了,铲子会为此工作?

如果铲子不起作用,还有其他方法可以实现此

我得到了几个关键工程师的回应,

我不正确 - 铲子实际上是双向的,既充当发布者又是消费者,因此您可以从远程经纪人发送接收消息。

然后,我应该能够通过在内部Rabbitmq Broker中安装和配置铲子插件来满足我的要求。

连接到Azure Service Bus经纪人时有一些陷阱:

  1. 如果您需要使用带有会话的队列,则应将GroupId属性用于会话ID(amqpMessage.Properties.GroupId = mySessionId(
  2. 如果您需要使用带有分区的队列,则应将x-opt-partition-key注释用于分区ID(amqpMessage.MessageAnnotations[new Symbol("x-opt-partition-key")] = myPartitionKey(

最新更新