簡體   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