zoukankan      html  css  js  c++  java
  • 消息中间件——RabbitMQ

    RabbitMQ介绍

    RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。RabbitMQ主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。

    AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。

    RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    Rabbitmq 安装

    http://www.rabbitmq.com

    先安装erlang环境

     

    直接下一步下一步安装完成

    配置系统环境: 
    新建一个系统变量:名称ERLANG_HOME,值为本机中erlang的安装目录。 
    然后再在用户变量PATH中添加上%ERLANG_HOME%in; 

    查看安装是否成功:cmd然后erl -version 

    安装RabbitMQ

    默认安装的RabbitMQ 监听端口是5672

    下一步下一步完成

    配置

    激活 RabbitMQ's Management Plugin

    使用RabbitMQ 管理插件,可以更好的可视化方式查看Rabbit MQ 服务器实例的状态。

    进入安装目录D:Program Files (x86)RabbitMQ Server abbitmq_server-3.7.10sbin

    打开命令窗口:

    输入指令激活插件:rabbitmq-plugins.bat enable rabbitmq_management

    重启服务器:net stop RabbitMQ && net start RabbitMQ

    关闭服务器:net stop RabbitMQ

    启动服务器:net start RabbitMQ

    登录验证

    http://localhost:15672/#/

    登陆默认 guest guest

    springboot集成RabbitMQ

    简单使用

    1、配置pom包,主要是添加spring-boot-starter-amqp的支持

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>

    2、配置文件

    配置rabbitmq的安装地址、端口以及账户信息

    spring.application.name=spirng-boot-rabbitmq
    
    spring.rabbitmq.host=127.0.0.1
    spring.rabbitmq.port=5672
    spring.rabbitmq.username=guest
    spring.rabbitmq.password=guest

    3、队列配置

    package com.td.rabbitmq;
    
    import org.springframework.amqp.core.Queue;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class RabbitConfig {
        @Bean
        public Queue Queue() {
            Queue queue = new Queue("hello");
            return queue;
        }
    }

    4、发送者

     rabbitTemplate是springboot 提供的默认实现

    package com.td.rabbitmq;
    
    import org.springframework.amqp.core.AmqpTemplate;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    import java.util.Date;
    @Component
    public class HelloSender {
    
        @Autowired
        private AmqpTemplate rabbitTemplate;
    
        public void send() {
            String context = "hello " + new Date();
            System.out.println("发送者Sender : " + context);
            this.rabbitTemplate.convertAndSend("hello", context);
        }
    }

     5、接收者

    package com.td.rabbitmq;
    
    import org.springframework.amqp.rabbit.annotation.RabbitHandler;
    import org.springframework.amqp.rabbit.annotation.RabbitListener;
    import org.springframework.stereotype.Component;
    
    @Component
    @RabbitListener(queues = "hello")
    public class HelloReceiver {
    
        @RabbitHandler
        public void process(String hello) {
            System.out.println("接收者Receiver  : " + hello);
        }
    
    }

    6、测试

    package com.td.rabbitmq;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class RabbitmqApplicationTests {
    
        @Autowired
        private HelloSender helloSender;
    
        @Test
        public void hello() throws Exception {
            helloSender.send();
        }
    }

    先发送一条消息不接收

    控制台发送一条消息

    运行接收

  • 相关阅读:
    python新建以时间命名的目录
    selenium跳过https的问题
    selenium修改控件属性
    selenium遍历控件集合
    知识库系统confluence5.8.10 安装与破解
    python3 遍历文件
    mysql更新密码为空
    CentOS7下安装配置vncserver
    Centos7搭建php+mysql环境(整理篇)
    centos7上安装与配置Tomcat7(整理篇)
  • 原文地址:https://www.cnblogs.com/lldsgj/p/10765311.html
Copyright © 2011-2022 走看看