如何在 Windows 上安装 Erlang 和 RabbitMQ 并完成首次消息收发?
如何在 Windows 上安装 Erlang 和 RabbitMQ 并完成首次消息收发【免费下载链接】toBeBetterJavaer一份通俗易懂、风趣幽默的Java学习指南内容涵盖Java基础、Java并发编程、Java虚拟机、Java企业级开发、Java面试等核心知识点。学Java就认准二哥的Java进阶之路项目地址: https://gitcode.com/GitHub_Trending/to/toBeBetterJavaer如果你想在 Windows 机器上跑起一个 RabbitMQ 消息队列并完成第一次「生产者发消息、消费者收消息」二哥的 Java 进阶之路 项目里的《RabbitMQ入门教程概念、应用场景、安装、使用》给出了完整路径先装 Erlang再装 RabbitMQ确认服务状态启用管理插件最后用 Java 的 amqp-client 客户端完成首次消息收发。本文按这条路径还原整个过程。为什么必须先装 Erlang文档中给出的解释是RabbitMQ 服务器是用 Erlang 语言编写的它的安装包里并没有集成 Erlang 环境因此需要先安装 Erlang再安装 RabbitMQ。这也是标题顺序如此的原因。安装 Erlang打开 Erlang 官网下载页erlang.org/download/otp_versions_tree.html选择安装包。文档写作时说明的最新版本是 23.0.1作者选择的是 64 位版本大小约 104M。下载完成后直接双击运行安装文档中为 64 位版本的 otp_win64_23.0.1.exe安装方式是图形化界面双击下一步。文档作者记录到过一个现象安装过程中电脑重启了一次似乎是要安装一个库重启后重新双击运行 otp_win64_23.0.1.exe 文件即可完成 Erlang 安装。如果你的机器也出现重启按同样方式续装即可。文档没有给出 Erlang 安装完成后的单独验证命令作者是在 Erlang 安装成功后直接进入 RabbitMQ 安装步骤。安装 RabbitMQ 并确认服务状态Erlang 安装成功后打开 RabbitMQ 官网的 Windows 安装页www.rabbitmq.com/install-windows.html选择页面上给出的 Windows 64 位安装包文件下载。文档示例中安装包只有 16.5M下载完双击运行 exe 文件安装即可。安装成功后RabbitMQ 会作为 Windows 服务存在可以从「开始」菜单管理 RabbitMQ Windows 服务。确认启动状态的方法从开始菜单打开「RabbitMQ Command Prompt (sbin dir)」输入rabbitmqctl.bat status文档示例的输出中包含这些信息数值为文档示例你的机器会不同进程 IDPID为 2816操作系统为 Windows当前版本号为 3.8.4Erlang 的配置信息能看到这些状态信息说明 RabbitMQ 服务已经启动。启用管理插件与 Web 管理端命令行界面不太直观文档建议启用管理 UI 插件rabbitmq-plugins enable rabbitmq_management看到插件启用成功的提示信息即可确认插件启用成功。然后在浏览器地址栏输入 http://localhost:15672/ 可以进入 RabbitMQ 管理端界面。管理端之后还能用来观察消息走势图验证消息收发时会有用。在 Java 项目中完成首次消息收发这一步模拟最简单的场景一个生产者发送消息到队列一个消费者从队列中读取消息并打印。添加客户端依赖在项目的 pom.xml 中添加 RabbitMQ 客户端依赖文档给出的版本为 5.9.0dependency groupIdcom.rabbitmq/groupId artifactIdamqp-client/artifactId version5.9.0/version /dependency生产者发送消息新建生产者类 Wanger队列名为 lovepublic class Wanger { private final static String QUEUE_NAME love; public static void main(String[] args) throws IOException, TimeoutException { ConnectionFactory factory new ConnectionFactory(); try (Connection connection factory.newConnection(); Channel channel connection.createChannel()) { channel.queueDeclare(QUEUE_NAME, false, false, false, null); String message 小巷我喜欢你。; channel.basicPublish(, QUEUE_NAME, null, message.getBytes(StandardCharsets.UTF_8)); System.out.println( [王二] 发送 message ); } } }关键点按文档说明ConnectionFactory 用来创建到 RabbitMQ 的默认连接主机名为 localhost再创建 Channel 来发送消息Connection 和 Channel 都实现了 Closeable 接口所以可以用 try-with-resource 语句。发送消息前必须通过 queueDeclare() 设置队列名称。basicPublish() 的四个参数第一个是 exchange本场景不需要设置为空字符串第二个是 routingKey这里用队列名填充第三个是 BasicProperties暂时不配置第四个是消息主体使用 UTF-8 字节数组以避免中文乱码。注意源文档给出的示例未列出 import 导入语句编译前需要按代码中用到的类自行补全。消费者接收消息新建消费者类 XiaoXiang队列名同样是 lovepublic class XiaoXiang { private final static String QUEUE_NAME love; public static void main(String[] args) throws IOException, TimeoutException { ConnectionFactory factory new ConnectionFactory(); Connection connection factory.newConnection(); Channel channel connection.createChannel(); channel.queueDeclare(QUEUE_NAME, false, false, false, null); System.out.println(等待接收消息); DeliverCallback deliverCallback (consumerTag, delivery) - { String message new String(delivery.getBody(), UTF-8); System.out.println( [小巷] 接收到的消息 message ); }; channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag - { }); } }与生产者的区别按文档说明创建通道的代码和生产者差不多但没有使用 try-with-resource 自动关闭连接和通道因为希望消费者一直保持连接直到你强制关闭它。接收消息同样通过 queueDeclare() 设置队列名称。RabbitMQ 通过异步方式推送消息所以要提供 DeliverCallback 回调处理收到的消息。basicConsume() 第二个参数 autoAck 为 true 表示服务器一次性交付消息。运行顺序与结果验证先启动消费者类 XiaoXiang它会打印「等待接收消息」并持续等待再运行生产者类 Wanger控制台打印[王二] 发送 小巷我喜欢你。消费者控制台随即打印[小巷] 接收到的消息 小巷我喜欢你。一次消息收发完成。文档还演示了 autoAck 的效果在启动消费者之前先多次运行生产者向队列发送多条消息消费者启动后会一次性收到全部消息。文档示例输出如下对应多次发送后启动消费者的场景等待接收消息 [小巷] 接收到的消息 小巷我喜欢你。 [小巷] 接收到的消息 小巷我喜欢你。 [小巷] 接收到的消息 小巷我喜欢你。发送消息的过程中也可以打开 http://localhost:15672/ 管理面板查看消息走势图从图形上确认消息流量。版本说明与边界文档演示环境为 Erlang 23.0.1文档写作时说明的最新版本、RabbitMQ 3.8.4、amqp-client 5.9.0均保持文档原样rabbitmqctl.bat status 输出中的 PID、版本等具体数值属于文档示例不代表你机器上的固定结果。文档作者自述对 RabbitMQ 仅是入门级使用「仅仅是因为要用就学一下」本文同样只覆盖安装与首次收发不涉及集群、高可用等文档未展开的内容。文档没有提供 Windows 下更细粒度的故障排查步骤如果某一步失败可回到对应步骤核对Erlang 是否安装完整、rabbitmqctl.bat status 是否显示服务状态、管理插件是否启用成功。【免费下载链接】toBeBetterJavaer一份通俗易懂、风趣幽默的Java学习指南内容涵盖Java基础、Java并发编程、Java虚拟机、Java企业级开发、Java面试等核心知识点。学Java就认准二哥的Java进阶之路项目地址: https://gitcode.com/GitHub_Trending/to/toBeBetterJavaer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考