RabbitMQ
【黑马程序员RabbitMQ全套教程,rabbitmq消息中间件到实战】
文章目录
- RabbitMQ
 - 第一天 基础
 - 3 RabbitMQ 快速入门
 - 3.1 入门程序
 - 3.1.1 生产者
 
第一天 基础
3 RabbitMQ 快速入门
3.1 入门程序
3.1.1 生产者
看下文档

点进去


先就来做一个 这个简单模式

- P:生产者
 - C:消费者
 - 中间红色的块:队列
 
【需求】使用简单模式完成消息传递
步骤:
① 创建工程(生成者、消费者)
② 分别添加依赖
③ 编写生产者发送消息
④ 编写消费者接收消息
来一个新的 空工程

直接创建

把送的 这个模块干掉


OK,干净了
添加 生产者模块

直接创建

OK,这就是 生产者模块
再来一个消费者 模块

OK, 直接创建

OK,两个 模块都准备 好了
【修改配置文件】
先在消费者 中
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.dingjiaxiong</groupId>
    <artifactId>rabbitmq-consumer</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
            <version>5.6.0</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
 
OK

生产者 直接复制就可

OK了,
【编码】【生产者】
package com.dingjiaxiong.producer;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
/**
 * ClassName: Producer_HelloWorld
 * date: 2022/11/16 10:58
 * 发送消息
 * @author DingJiaxiong
 */
public class Producer_HelloWorld {
    public static void main(String[] args) throws IOException, TimeoutException {
        //1. 创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        //2. 设置参数
        factory.setHost("xxxxxxxxxx"); // 服务器IP【默认本机 localhost】
        factory.setPort(5672); //端口【默认也是 5672】
        factory.setVirtualHost("/ding"); //虚拟机【 默认是 /】
        factory.setUsername("dingjiaxiong"); // 用户名【默认 guest】
        factory.setPassword("12345"); //密码【默认 guest】
        //3. 创建连接 Connection
        Connection connection = factory.newConnection();
        //4. 创建Channel
        Channel channel = connection.createChannel();
        //5. 创建队列Queue
        /**
         * queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments)
         * 参数解释:
         *        1. queue:队列名称
         *        2. durable:是否持久化【当mq 重启之后,还在】
         *        3. exclusive:
         *              - 是否独占。只能有一个消费者监听这队列
         *              - 当Connection 关闭时,是否删除队列
         *        4.autoDelete:是否自动删除【当没有Consumer 时,自动删除掉】
         *        5.arguments:一些参数信息
         * */
        //【如果没有一个名字叫hello_world 的队列,则会创建该队列,如果有则不会创建】
        channel.queueDeclare("hello_world",true,false,false,null);
        //6. 发送消息
        /*
         * basicPublish(String exchange, String routingKey, boolean mandatory, BasicProperties props, byte[] body)
         * 参数解释:
         *        1. exchange:交换机名称。简单模式下交换机会使用默认的【""】
         *        2. routingKey:路由名称。
         *        3. props:配置信息
         *        4. body:发送消息数据
         * */
        String body = "hello,rabbitmq";
        channel.basicPublish("","hello_world",null,body.getBytes());
        //7. 释放资源
        channel.close();
        connection.close();
    }
}
 

现在管控台 是没有队列 的
直接运行结果

OK,没有报错
再次查看 管控台

OK,队列和消息 都有了,消息还没有被消费,点进去看看

准备被消费的消息 有一个,总共的消息 也是一个
看看Connection ,

代码中 建立了又关闭了,所以这里依然啥也没有

交换机是用的 默认的交换机【可以看到 它有流量输送】
这次我们试试不关闭连接

可以看到,运行没有停止
再次查看管控台

这次就 有连接了

也有Channel 了

而且队列里 就有两条消息了
加上一列


OK

现在的 意思就是当前这个队列 没有消费者
【这就是生产者 基本的代码】










![玩以太坊链上项目的必备技能(库 [library]-Solidity之旅十七)](https://img-blog.csdnimg.cn/789152d1fd9d40feb70734f65e5b95a3.png#pic_center)






