如何在docker上发送消息?

时间:2017-11-15 13:27:35

标签: c# docker rabbitmq

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

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

使用此行创建容器

String fname = "Sam\u0025";

PreparedStatement ps= conn.prepareStatement("SELECT * FROM Users WHERE User_FirstName LIKE ? ");

ps.setString(1, fname);

我正在尝试创建一个简单的控制台应用程序来检查邮件发送的工作方式(来自base tutorial):

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

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

中转换

我缺少的是,这个例子不适用于docker吗?

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:2)

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

  

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