rabbitmq(java)入门教程
ng[] args) throws Exception { // 创建连接工厂 ConnectionFactory factory = new ConnectionFactory(); // 设置 rabbitmq 连接地址 factory.setHost("localhost"); // 设置 rabbitmq 连接用户名 factory.setUsername("guest"); // 设置 rabbitmq 连接用户密码 factory.setPassword("guest"); factory.setVirtualHost("/"); // 创建连接 Connection conn = factory.newConnection(); // 创建信道 Channel channel = conn.createChannel(); // 设置一个队列名称 String queueName = "myqueue"; // 声明消息队列(如果不存在则创建) channel.queueDeclare(queueName, false, false, false, null); // 创建消费者并绑定到队列 QueueingConsumer consumer = new QueueingConsumer(channel); channel.basicConsume(queueName, true, consumer); System.out.println(" [*] Waiting for messages. To exit press CTRL+C"); // 接收并处理消息 while (true) { QueueingConsumer.Delivery delivery = consumer.nextDelivery(); String message = new String(delivery.getBody()); System.out.println(" [x] Received '" + message + "'"); // 处理完消息后,确认消息已被消费 channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false); } // 关闭连接 channel.close(); conn.close(); } } 【知识点详解】 1. **RabbitMQ 概述** RabbitMQ 是一个基于 AMQP(Advanced Message Queuing Protocol)协议的开源消息队列系统,由 Erlang 语言开发。它主要负责接收生产者发送的消息,并将这些消息可靠地传递给消费者。RabbitMQ 的核心概念包括生产者、队列和消费者。 2. **AMQP 协议** AMQP 是一种开放标准的消息中间件协议,它定义了一种规范化的消息格式和交换模型,使得不同的应用程序和平台可以无缝通信。在 RabbitMQ 中,生产者通过交换器将消息路由到一个或多个队列,消费者从队列中接收消息。 3. **RabbitMQ 安装** 在 Windows 上,首先需要安装 Erlang 环境,然后下载 RabbitMQ 的 Windows 版本进行安装。安装完成后,通过运行命令 `rabbitmq-plugins enable rabbitmq_management` 启用管理插件,以便访问 Web 管理界面。默认的 Web 界面可以通过 http://localhost:15672 访问,使用默认的用户名和密码 "guest"。 4. **Java 客户端编程** - **消息发送**:Java 客户端使用 `com.rabbitmq.client` 包中的类来连接到 RabbitMQ 服务器,创建信道,声明队列,然后通过 `channel.basicPublish()` 方法发送消息。 - **消息接收**:同样使用 `com.rabbitmq.client` 包,创建消费者并订阅队列。当有新消息到达时,`QueueingConsumer.nextDelivery()` 方法会阻塞等待,直到接收到消息。处理完消息后,调用 `channel.basicAck()` 来确认消息已被消费。 5. **消息模型** RabbitMQ 提供多种消息模型,如 Direct、Fanout、Topic 和 Headers 等,可以根据实际需求选择合适的交换器类型来路由消息。在上述简单的示例中,使用了默认的 Direct 交换器,它将消息直接投递到指定的队列。 6. **队列与持久化** 队列是存储消息的容器,可以设置队列是否持久化,以保证即使在 RabbitMQ 重启后,消息也不会丢失。在示例代码中,没有设置队列持久化,如果需要持久化,可以在 `channel.queueDeclare()` 方法中传入相应的参数。 7. **安全性** 默认情况下,RabbitMQ 使用 "guest" 用户进行身份验证,但出于安全考虑,不建议在生产环境中使用此默认用户。应创建新的用户并配置相应的权限。 通过以上内容,我们可以了解到如何在 Java 中使用 RabbitMQ 实现基本的消息发送和接收。在实际应用中,还需要根据业务需求配置交换器、队列绑定以及消息的确认机制等,以构建更复杂的异步通信和工作流。
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/release/download_crawler_static/9680816/bg1.jpg)
![](https://csdnimg.cn/release/download_crawler_static/9680816/bg2.jpg)
剩余9页未读,继续阅读
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/8e966f2af5bf4134a9e6b0449abb1d5e_pannijingling.jpg!1)
- 粉丝: 1
- 资源: 7
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)