RabbitMQ初体验之原生java依赖的MQ

1.什么是MQ

        1.1MQ全称为Message Queue,即消息队列. 它也是一个队列,遵循FIFO原则 。RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue Protocol高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开 发中应用非常广泛。官方地址:http://www.rabbitmq.com/

2.MQ的使用场景

        2.1 解耦 消除峰值 服务调用异步

3.MQ的组成

        Broker:消息队列服务进程,此进程包括两个部分:Exchange和Queue。

        Exchange:消息队列交换机,按一定的规则将消息路由转发到某个队列,对消息进行过虑。

        Queue:消息队列,存储消息的队列,消息到达队列并转发给指定的消费方。

        Producer:消息生产者,即生产方客户端,生产方客户端将消息发送到MQ。

        Consumer:消息消费者,即消费方客户端,接收MQ转发的消息。

4.在java中使用如何去使用MQ

        4.1 首先我们导入MQ在java中的原生依赖

 <dependency>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
            <!--和springboot2.0.5对应-->
            <version>5.4.1</version>
        </dependency>

导入成功之后我们先去创建一个生产者(Producer)和消费者(Consumer),

         4.2 生产者的类我们有了,接下来就是去类中准备MQ所需要的东西了

        

import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * @author sj 生产者
 * @data 2022/1/26 15:27
 */
public class Producer {

    /**
     * 对列名
     */
    public static final String QUEUE = "OrderOfColumn";

    public static void main(String[] args) throws IOException, TimeoutException {
        // 创建工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
//        // 连接服务地址
//        connectionFactory.setHost("127.0.0.1");
//        connectionFactory.setPort(5672);
        // 获取连接
        Connection connection = connectionFactory.newConnection();
        // 创建和交换机的通道
        Channel channel = connection.createChannel();
        /**
         * 声明队列,如果Rabbit中没有此队列将自动创建
         * param1:队列名称
         * param2:是否持久化
         * param3:队列是否独占此连接
         * param4:队列不再使用时是否自动删除此队列
         * param5:队列参数
         */
        channel.queueDeclare(QUEUE,true,false,false,null);
        /**
         * * @param exchange用来发布消息的exchange
         * * @param routingKey路由键
         * * @param支持消息路由头等其他属性
         * @param body消息正文
         * * @当遇到错误时抛出java.io.IOException
         */
        channel.basicPublish("",QUEUE,null,"我是你爸爸".getBytes());
        System.out.println("消息发送完成");
       channel.close();
       connection.close();
    }
}

其中我们创建完工厂以后,是可以指定ip,以及端口的,小哥在这里就选择了默认的,有兴趣的朋友可以点进工厂看一下,下图就是工厂的原生代码

 生成者我们准备好了过后,我们就可以去发送消息了,发了消息过后我们可以去访问localhost:15672这个地址

 由上图我们可以看到我们发送消息已经成功了,当然我们还可以看我们消息发送的内容,

 当然小编这里只是给大家演示,并没有指定交换机等等,消息我们已经发送成功了,下面我们去写消费者


import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * @author sj  消费者
 * @data 2022/1/26 15:27
 */
public class Consumer {

    public static void main(String[] args) throws IOException, TimeoutException {
        // 创建工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        // 获取连接
        Connection connection = connectionFactory.newConnection();
        // 创建和交换机的通道
        Channel channel = connection.createChannel();
        // 消费消息
        DefaultConsumer defaultConsumer = new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                System.out.println("X消费者已经收到消息拉");
            }
        };

        // 监听对列
        channel.basicConsume(Producer.QUEUE,defaultConsumer);
    }
}

消费者写好过后,我们就可以去消费消息了,

 此时我们的消息就已经本消费了哦,下一章将讲解MQ的几种常用模型,以及消息丢失问题

4.小结

          4.1消息发布接收流程:

1.发送消息

  1. 生产者和Broker建立TCP连接。
  2. 生产者和Broker建立通道。
  3. 生产者通过通道消息发送给Broker,由Exchange将消息进行转发。
  4. Exchange将消息转发到指定的Queue(队列)

2.接收消息

  1. 消费者和Broker建立TCP连接
  2. 消费者和Broker建立通道
  3. 消费者监听指定的Queue(队列)
  4. 当有消息到达Queue时Broker默认将消息推送给消费者。
  5. 消费者接收到消息
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值