【问题标题】:How to send message in rabbitmq on docker?如何在docker上的rabbitmq中发送消息?
【发布时间】:2017-11-15 13:27:35
【问题描述】:

同样,它应该很简单,但找不到任何关于它的文档

在我之前的 question 中,我在 docker 中运行 rabbitmq 容器时遇到了问题。已经解决了,现在又出现了一个

容器是用这一行创建的

docker run -d --hostname my-rabbit --name some-rabbit -p 15672:15672 rabbitmq:3-management

我试图创建一个简单的控制台应用程序来检查消息发送的工作方式(来自base tutorial):

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));
  }
}

结果是,它不起作用。 我收到异常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 一起使用吗?

【问题讨论】:

  • 哦...试过了...成功了...天哪。你能把这个作为答案吗?

标签: c# docker rabbitmq


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    在您的特定情况下,docker 命令看起来像这样

    docker run -d --hostname my-rabbit --name some-rabbit -p 15672:15672 -p 5672:5672 rabbitmq:3-management

    【讨论】:

      猜你喜欢
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多