RabbitMQ架构、RabbitMQ的使用

本文详细介绍了RabbitMQ的架构,包括生产者、消费者、交换机和队列的角色。同时,阐述了RabbitMQ的7种通讯方式,包括Hello-World、work、Publish/Subscribe、Routing和Topic模式,提供了Java连接RabbitMQ的示例,并解析了各种模式的工作原理和应用场景。
摘要由CSDN通过智能技术生成

官方的简单架构图

 

  • Publisher - 生产者:发布消息到RabbitMQ中的Exchange

  • Consumer - 消费者:监听RabbitMQ中的Queue中的消息

  • Exchange - 交换机:和生产者建立连接并接收生产者的消息

  • Queue - 队列:Exchange会将消息分发到指定的Queue,Queue和消费者进行交互

  • Routes - 路由:交换机以什么样的策略将消息发布到Queue

简单架构图,巧记,pe,r,qc

 

一句话总结:生产者消息发布交给交换机,交换机把消息路由给队列,队列被消费者监听到有消息,消息被消费掉↑

完整架构图,下面的/test是假设等会要新建的虚拟主机的名字,默认的虚拟主机Virtual Host名字叫/

完整架构图,巧记pe,r,qc,ccc,vm

 

生产者和消费者都要先和虚拟主机Virtual Host建立连接,然后分别跟交换机和队列通过管道Channel来传输数据↑

Ready:待消费的消息总数

Unacked:待应答(待确认)的消息总数

Total:总数 Ready+Unacked

RabbitMQ的使用【重点


 RabbitMQ的7种通讯方式↓

通讯方式

 

Java连接RabbitMQ

导入依赖

仓库https://mvnrepository.com/搜索amqp-client来下载java客户端依赖,版本一般找最多人用的即可↓

<dependencies>
    <dependency>
        <groupId>com.rabbitmq</groupId>
        <artifactId>amqp-client</artifactId>
        <version>5.6.0</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>

创建工具类连接RabbitMQ,连接工厂指定参数,新建连接来得到

public class RabbitMQClient {
    public static Connection getConnection(){
        // 创建Connection工厂
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("192.168.200.129");//这里要注意换成你自己虚拟机的ip,因为mq装在虚拟机上
        factory.setPort(5672);//注意图形化界面端口才是15672
        factory.setUsername("test");
        factory.setPassword("test");
        factory.setVirtualHost("/test");

        // 创建Connection
        Connection conn = null;
        try {
            conn = factory.newConnection();
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 返回Connection
        return conn;
    }
}

测试连接

public class TestConnection {
    @Test
    public void test1(){
        Connection connection = RabbitMQClient.getConnection();
        System.out.println(connection);//amqp://test@192.168.200.129:5672//test
        try {
            connection.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

通讯方式

1、Hello-World

一个生产者,一个默认的交换机,一个队列,一个消费者

结构图
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值