EasyNetQ 订阅抛出 taskCanceledException

问题描述 投票:0回答:1

我正在尝试使用 C# 中的 EasynetQ lib 创建 RabitMQ 消息传递的基本示例。 当我在本地主机上执行此操作时,它工作正常,但是当我尝试连接到另一台计算机上的rabbitmq服务器时,我在调用订阅方法时收到任务取消异常。 我正在使用 .net 7.0 和 easynetQ 7.5.5 这是我的发布者代码:

using EasyNetQ;
using RabbitMQLearning.Shared.Messages;

var counter = 0;
using var bus = RabbitHutch.CreateBus("host=webdev;port=5672;username=usr;password=pwd");

var Timer = new Timer(PublishMessage, state:null,dueTime:0,period: (int) new TimeSpan(0,0,1).TotalMilliseconds);

await Task.Delay(Timeout.Infinite);


void PublishMessage(object state)
{

    var message = new BasicMessage {
        Id= counter,
        Text = $"Hello {counter} from the rabbit hole"
    };

    bus.PubSub.Publish(message);

    Console.WriteLine($"{DateTime.Now.ToString("HH:mm:ss:fff")} Message {counter} sent");
    counter++;
}

订户:

using EasyNetQ;
using RabbitMQLearning.Shared.Messages;

using var bus = RabbitHutch.CreateBus("host=webdev;port=5672;username=usr;password=pwdx");

bus.PubSub.Subscribe<BasicMessage>("MadHatter", SubscribeMessage);
Console.WriteLine("subscribed");

await Task.Delay(Timeout.Infinite);

Task SubscribeMessage(BasicMessage message) {
    Console.WriteLine($"{DateTime.Now.ToString("HH:mm:ss:fff")} {message.Id} heard");
    return Task.CompletedTask;
}

和消息对象:

namespace RabbitMQLearning.Shared.Messages {
    public class BasicMessage {
        public int Id { get; set; }
        public string Text { get; set; }
    }
}

几秒钟后,我在

subscribe<BasicMessage>
调用中收到 TaskCanceledException。 订阅控制台消息根本没有被点击

我在这里缺少什么?

c# rabbitmq easynetq
1个回答
0
投票

好吧,这是一个愚蠢的 bannapeel,它无法解析连接字符串中的服务器名称。如果我在主机部分使用 FQDN 或 IP 地址,那么它就可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.