Rabbitmq 代理内部流量到Azure服务总线

Rabbitmq 代理内部流量到Azure服务总线,rabbitmq,azureservicebus,rabbitmq-shovel,Rabbitmq,Azureservicebus,Rabbitmq Shovel,我试图实现的是内部网络中RabbitMQ客户机与Azure中运行的Azure服务总线消费者之间的互操作性 RabbitMQ客户端需要发布和订阅,Azure服务总线消费者也需要发布和订阅,因此我需要某种“双向代理”。我试图实现的目标的示意图: + Internal network | Azure |

我试图实现的是内部网络中RabbitMQ客户机与Azure中运行的Azure服务总线消费者之间的互操作性

RabbitMQ客户端需要发布和订阅,Azure服务总线消费者也需要发布和订阅,因此我需要某种“双向代理”。我试图实现的目标的示意图:

                                      +
                    Internal network  |  Azure
                                      |
                                      |
+--------+                            |                               +----------+
| Client +---+                        |                           +---+ Consumer |
+--------+   |                        |                           |   +----------+
             |                        |                           |
             | +-----------------+    |    +-------------------+  |
             +-+ RabbitMQ Broker +---------+ Azure Service Bus +--+
             | +-----------------+    |    +-------------------+  |
             |                        |                           |
+--------+   |                        |                           |   +----------+
| Client +---+                        |                           +---+ Consumer |
+--------+                            |                               +----------+
                                      |
                                      |
                                      |
                                      +
另外,RabbitMQ代理和Azure服务总线都可以执行AMQP1.0。我看过兔子铲插件,但我认为这只会处理从内部客户端到Azure的消息发布,而不允许客户端订阅Azure消费者发布的消息?还是我搞错了,铲子能解决这个问题


如果铲子坏了,有没有其他方法来实现这一点

我从小组里的几个关键工程师那里得到了回应

我错了-铲子实际上是双向的,既充当发布者又充当消费者,因此您可以从远程代理发送和接收消息

然后,我应该能够通过在内部RabbitMQ代理中安装和配置来满足我的需求

但是,连接到Azure Service Bus代理时存在一些问题:

  • 如果需要在会话中使用队列,则应使用会话ID的属性(
    amqpMessage.Properties.GroupId=mySessionId
  • 如果需要使用带有分区的队列,则应使用分区ID的注释(
    amqpMessage.MessageAnnotations[new Symbol(“x-opt-partition-key”)]=myPartitionKey

  • @从理论上讲,这应该行得通,但我没能做到。我花了很多时间搞乱了铲子插件,但从未让它连接到服务总线。我看到有一些相关的,各种各样的问题,关于它在哪里看起来像其他人已经得到了它的工作。这个答案对我帮助很大。我一直在跟踪,这对我很有效:)