开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 30 天,点击查看活动详情
- 安装适用于 Windows 的 Docker:只需下载它并让安装程序完成剩下的工作
- 启动 Docker 并等待其初始化。您将在任务栏中看到一个鲸鱼图标
- 打开 Powershell 并键入:
docker --version
如果您没有看到任何错误,并且看到了 Docker 版本,则表明它已正确安装。
- 现在我们必须下载 RabbitMQ 镜像。在这种情况下,我们将使用管理插件下载图像,以便能够查看 RabbitMQ 服务器端 GUI。下载或更新 Docker 镜像的命令是
pull
docker pull rabbitmq:3-management
- 现在我们将使用一个简单的命令启动 RabbitMQ Docker 镜像:
docker run -d -p 15672:15672 -p 5672:5672 --name rabbit-test-for-medium rabbitmq:3-management
通过p
参数,我们将 RabbitMQ 端口映射到 Docker 容器端口。15672 是 RabbitMQ GUI 的默认端口,5672 是 RabbitMQ 消息代理的默认端口。我们使用参数name
为我们的容器命名,以便以比使用生成的 GUID 更易读的方式识别它。这将使我们能够轻松地停止、删除和管理我们的容器。最后,我们指定要运行的 docker 镜像,在本例中是我们之前拉取的镜像。
如果操作顺利,您将看到一个 GUID 作为输出。
- 通过在浏览器中打开“ http://localhost:15672/#/ ”来测试图像。默认登录是
guest
guest
:您应该看到 RabbitMQ 管理 GUI。
如果你正确地看到了这个页面,那么最重要的部分就完成了!
- 现在我们已准备好将消息发送到我们的 RabbitMQ 端点!在此阶段,选择权在您手中:我每天都使用 .NET,因此我将向您展示一个 C# 示例。提醒您,使用您的首选语言连接到端点的默认值:
HostName: “localhost”
UserName: “guest”
Password: “guest”
Port: 5672
在我的例子中,我将创建一个新的 Windows 控制台应用程序,安装RabbitMQ.Client
Nuget 包并编写一些代码行来创建一个队列并每 500 毫秒发送一条消息:
using RabbitMQ.Client;
using System;
using System.Text;
using System.Threading.Tasks;
namespace TestRabbit
{
internal static class Program
{
static async Task Main(string[] args)
{
const string queueName = "testqueue";
try
{
var connectionFactory = new ConnectionFactory()
{
HostName = "localhost",
UserName = "guest",
Password = "guest",
Port = 5672,
RequestedConnectionTimeout = 3000, // milliseconds
};
using (var rabbitConnection = connectionFactory.CreateConnection())
{
using (var channel = rabbitConnection.CreateModel())
{
// Declaring a queue is idempotent
channel.QueueDeclare(
queue: queueName,
durable: false,
exclusive: false,
autoDelete: false,
arguments: null);
while (true)
{
string body = $"A nice random message: {DateTime.Now.Ticks}";
channel.BasicPublish(
exchange: string.Empty,
routingKey: queueName,
basicProperties: null,
body: Encoding.UTF8.GetBytes(body));
Console.WriteLine("Message sent");
await Task.Delay(500);
}
}
}
}
catch (Exception ex)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(ex.ToString());
Console.ForegroundColor = ConsoleColor.White;
}
Console.WriteLine("End");
Console.Read();
}
}
}
在这种情况下,我使用了与 RabbitMQ 相关的小技巧:我通过设置与我声明的队列同名的发布方法的路由键,直接将消息发送到队列而不设置到交换的绑定.
- 最后,我们要确保消息被队列正确接收。我们可以打开我们的管理 GUI,点击
Queues
导航按钮,然后testqueue
。如果我们发送消息,我们将看到图表的线条在移动:
此外,您可以单击
Get messages
菜单以从队列中获取消息并阅读其正文: