繁体   English   中英

无法让主题交换在 RabbitMQ AMQP 1.0 中工作

[英]Unable to get Topic Exchange to Work in RabbitMQ AMQP 1.0

我发现使用 RabbitMQ 和 AMQP 1.0 非常困难,特别是因为它与使用 AMQPNetLite 的主题交换有关。 我无法使用主题交换向特定队列发送消息。 我什至没有使用通配符。

我的情况也超级简单。 我有一个主题交流。 我有一个主题交换发送到的队列。 当我发送到主题交换时,队列永远不会收到消息。

test.exchange:
  bind: testqueue - routing key: test

testqueue:
  bound to exchange with routing key: test

AMQP 1.0 文档说“主题”是路由键,对吗? 好吧,当我使用 AMQPNetLite 发送到 RabbitMQ 时,它似乎已连接,并且主题似乎已收到消息,但从未路由到队列。

这是整个代码:

            var rabbitMqAddress = $"amqp://127.0.0.1:5672";
            var address = new Address(rabbitMqAddress);
            var producerName = $"Producer-test.topic-{Time.GetTimeStamp()}";

            var connection = new Connection(address, null, new Open
            {
                ContainerId = Guid.NewGuid().ToString(),
                ChannelMax = 64,
            }, null);

            var session = new Session(connection);
            var senderLink = new SenderLink(session, producerName, "/topic/test.exchange");

            senderLink.Send(new Message
            {
                BodySection = new AmqpValue { Value = "test 123" },
                Properties = new Properties
                {
                    Subject = "test",
                }
            });

在此处输入图片说明

图像证明了绑定。 有什么我想念的吗?

我认为你混合了这样做的方式。 您要么发布到地址“/topic/test”-其中 test 是您的路由密钥,要么发布到“/exchange/test.exchange”并将主题属性设置为“test”。

两者都有效。 如果您在地址中使用“/topic/”-前缀,则您将通过默认的“amq.topic”-exchange 而不是您自己的“test-exchange”。

有道理? 此处“路由和寻址”部分中的更多信息: https : //github.com/rabbitmq/rabbitmq-amqp1.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM