栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

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

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中的原生依赖

 
            com.rabbitmq
            amqp-client
            
            5.4.1
        

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

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

        

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

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


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();
        
        channel.queueDeclare(QUEUE,true,false,false,null);
        
        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;


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. 消费者接收到消息
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/720116.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号