如何在docker上发送消息?

Ole*_*jko 6 c# rabbitmq docker

它应该是简单的,但无法找到任何关于它的文档

在我之前的问题中,我遇到了在docker中运行rabbitmq容器的问题.它已经解决了,但现在又出现了另一个

使用此行创建容器

docker run -d --hostname my-rabbit --name some-rabbit -p 15672:15672 rabbitmq:3-management
Run Code Online (Sandbox Code Playgroud)

我试图创建一个简单的控制台应用程序来检查消息发送是如何工作的(从基础教程):

var factory = new ConnectionFactory()
{
  HostName = "localhost",
  Port = 15672
};

using (var connection = factory.CreateConnection())
{
  using (var channel = connection.CreateModel())
  {
    channel.QueueDeclare("Test", false, false, false, null);

    var mess = new RepMessage()
    {
       ConnectionString = "TestingString",
       QueueID = 5
    };

    var jsonified = JsonConvert.SerializeObject(mess);
    var messBody = Encoding.UTF8.GetBytes(jsonified);
    channel.BasicPublish("", "Test", null, messBody);

    Console.WriteLine(string.Format("Message with ConStr={0}, QueueID={1} has been send", mess.ConnectionString, mess.QueueID));
  }
}
Run Code Online (Sandbox Code Playgroud)

结果是,它不起作用.我收到异常None of the specified endpoints were reachable和内部异常connection.start was never received, likely due to a network timeout

如果我删除端口,那么我的内部异常将转换为 No connection could be made because the target machine actively refused it 127.0.0.1:5672

我错过了什么,这个例子不应该与docker一起使用吗?

Evk*_*Evk 10

端口15672是rabbitmq管理插件Web界面的端口.当您向兔子发送消息时 - 您需要连接到不同的端口(默认情况下 - 5672).因此,请更改您的代码以连接到该端口并将其映射到docker via -p 5672:5672.