我要实现的是内部网络中的兔子客户端之间的互操作性,而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经纪人时有一些陷阱:
- 如果您需要使用带有会话的队列,则应将
GroupId
属性用于会话ID(amqpMessage.Properties.GroupId = mySessionId
( - 如果您需要使用带有分区的队列,则应将
x-opt-partition-key
注释用于分区ID(amqpMessage.MessageAnnotations[new Symbol("x-opt-partition-key")] = myPartitionKey
(