2个AWS MQ Private RabbitMQ集群之间的铲套配置
因此,我在同一个 vpc 中有 2 个 AWS MQ RabbitMQ 集群,无法公开访问。 两者都是具有 3 个节点的多 az 集群。
假设
- rabbitmq-
- 1rabbitmq-2
现在我想在Rabbitmq管理控制台中创建一个从1到2的动态铲子。
我正在尝试使用
- source_protocol = amqp091
- source_uri = amqps://user1:pass1@b-1xxxx:5671
- destination_protocol = amqp091
- destination_uri = amqps://user2:pass2@b-2xxxx:5671
创建但铲子状态卡在开始:
另外,在 cloudwatch 中,有时我会看到以下错误:
Shovel with the name 'test-bill ' was not found on the target node '[email protected]' and / or virtual host '/'
我不明白 shovel 创建和3 个节点。有时我什至无法从控制台删除铲子。我认为它是随机分布在节点之间的。 关于问题所在以及铲子无法成功连接的任何想法吗?
So I have 2 AWS MQ RabbitMQ clusters in the same vpc without public accessibility.
Both are multi az Clusters with 3 nodes.
Lets say
- rabbitmq-1
- rabbitmq-2
Now I want to create a dynamic shovel from 1 to 2 in the Rabbitmq management console.
I'm trying to create with
- source_protocol = amqp091
- source_uri = amqps://user1:pass1@b-1xxxx:5671
- destination_protocol = amqp091
- destination_uri = amqps://user2:pass2@b-2xxxx:5671
But the shovel status is stuck in starting:
Also in cloudwatch sometimes I see the following error :
Shovel with the name 'test-bill ' was not found on the target node '[email protected]' and / or virtual host '/'
I don't get what exactly happens with the shovel creation and the 3 nodes. Sometimes I can't even delete shovel from the console. I think it is randomly distributed between nodes.
Any ideas on what is the issue and shovel doesn't connect successfully?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
因此,在 AWS Support 的帮助下,似乎 2 个私有 AWS MQ RabbitMQ 集群无法通过 shovel 连接。
So With AWS Support help , it seems that 2 private AWS MQ RabbitMQ clusters cannot connect via shovel.
是的,没错,Shovel 不会直接在私人经纪人之间传输消息。
但你可以在其中一位公共经纪人的帮助下实现这一目标。
您需要创建一个公共经纪人来充当两个经纪人之间的中间人。
因此基本上有两个过程:首先,您必须在源私有代理和公共代理之间传输消息,其次是在公共到目标私有代理之间传输消息。
在这两种情况下,您都需要在私人经纪人中创建一把铲子。
第一个过程:在您的私人源经纪人中创建一个铲子。给出源代理和目标代理的队列名称。但是当指定 src-uri (amqp://) 时,不要更改此字段,因为如果您在此 amqps://{broker-name}:{password} 中给出 src-uri,rabbitmq 会自动处理自己的 URI @{host}:{port} 格式化它将无法工作并停留在起始状态。
现在根据公共代理 URI 更改 dest-URI;例如 amqps://{broker-name}:{password}@{host}:{port}。
创建铲子并以运行状态启动。因此,第一步已完成,所有消息都从私有源传输到公共代理。
第二个过程:在您的目标经纪人中创建一个铲子,现在您的公共经纪人是您的源经纪人,目标经纪人是您的私人经纪人。
所以 src-uri 是 amqps://{broker-name}:{password}@{host}:{port} 并且
dest-uri 是 amqp:// 再次不要更改此字段。
现在使用适当的源队列名称和目标队列名称创建一个铲子。
检查铲子是否处于运行状态,并且所有消息都在公共到私人之间传输。
因此,通过这种方式,您可以毫不费力地在两个私人经纪人之间传输消息。
Yes, right Shovel does not transfer messages directly between private brokers.
But you can make this happen with the help of one public broker between them.
you need to create one public broker to act as a middleman between two brokers.
so there is basically two process: first, you have to transfer messages between your source private broker to the public broker, and second is transfer message between the public to destination private broker.
in both cases, you need to create a shovel in the private broker.
first process: in your private source broker create one shovel. Give the queue name for the source and destination broker. but When specifying src-uri (amqp://), do not change this field because the rabbitmq automatically takes care of its own URI if you give the src-uri in this amqps://{broker-name}:{password}@{host}:{port} formate it won't work and stuck on the starting state.
Now change dest-URI according to the public broker URI; for example amqps://{broker-name}:{password}@{host}:{port}.
create the shovel and it starts in running state. so the first step is done all the messages are transferred from a private source to a public broker.
second process: in your destination broker create a shovel and now your public broker is your source broker and the destination broker is your private broker.
so the src-uri is amqps://{broker-name}:{password}@{host}:{port} and
dest-uri is amqp:// again do not change this fild.
now create a shovel with the appropriate source and destination queue name.
check that the shovel is in running state and all the messages are transferred between public to private.
so in this way, you transfer messages between your two private brokers without much effort.