设为首页 加入收藏

TOP

03-RabbitMQ的工作模式(一)
2023-07-25 21:38:54 】 浏览:96
Tags:03-RabbitMQ

RabbitMQ的工作模式

一、模式概述

RabbitMQ提供了6种工作模式:简单模式、工作队列模式、订阅模式、路由模式、通配符模式、远程调用模式

其中远程调用模式(RPC)暂不作介绍。

官网对于模式介绍:https://www.rabbitmq.com/getstarted.html

RabbitMQ六种工作模式

二、简单模式 HelloWorld

2.1、模式说明

简单模式

在上图的模型中,有以下概念:

  • P:生产者,也就是要发送消息的程序
  • C:消费者,消息的接收者,会一直等待消息到来
  • Queue:消息队列,图中红色部分。类似一个邮箱,可以缓存消息;生产者向其中投递消息,消费者从其中取出消息。

2.2、代码举例

需求:使用简单模式完成消息传递

步骤:

  1. 创建工程(生产者、消费者)
  2. 分别添加依赖
  3. 编写生产者发送消息
  4. 编写消费者接收消息

1、创建工程

创建空项目RabbitMQ,然后在RabbitMQ下面创建生产者rabbitmq-producer、消费者rabbitmq-consumer模块(New Module - Build System选Maven)

简单模式-创建生产者消费者工程

简单模式-工程结构

2、添加依赖和编译插件

这里生产者和消费者是一样的

maven-compiler-plugin 插件是一个 Maven 插件,用来编译项目代码。

自从3.0开始默认的编译器是 javax.tools.JavaCompiler,用来编译 Java 源码;

如果你想强制插件使用 javac 编译器,你必须配置插件的属性 forceJavacCompilerUse;

还要注意,当前默认源(source)设置为 1.8,默认目标(target)设置为 1.8。独立运行 Maven 和 JDK,可以通过 source 和 target 选项更改他们的默认值;

插件设置的各种参数信息请查看

http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#forceJavacCompilerUse

<dependencies>
    <!--rabbitmq java 客户端-->
    <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.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

3、编写生产者发送消息

public class Producer_HelloWorld {

    public static void main(String[] args) throws IOException, TimeoutException {
        
        // 1、创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();

        // 2、设置参数
        factory.setHost("192.168.3.100");  // ip 默认值 localhost
        factory.setPort(5673); // 端口 默认值 5672
        factory.setVirtualHost("/"); // 虚拟机 默认值 /
        factory.setUsername("guest"); // 用户名 默认值 guest
        factory.setPassword("guest"); // 密码 默认值 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, AMQP.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();
    }
}

4、编写消费者接收消息

public class Consumer_HelloWorld {

    public static void main(String[] args) throws IOException, TimeoutException {
        
        // 1、创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();

        // 2、设置参数
        factory.setHost("192.168.3.100");  // ip 默认
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇剑指 Offer 68 - I. 二叉搜索树的.. 下一篇又发现了一个有趣的 ChatGPT 玩法..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目