springboot之rabbitmq安装与实践

环境:腾讯云centos7 

注意:rabbitmq安装插件,可能会报错。本人是主机名的问题,所以修改了主机名。

vim /etc/hosts

vim /etc/hostname

修改这两个文件,并重启主机,然后再运行rabbitmq,没有问题了。

1、下载安装包

https://www.rabbitmq.com/install-generic-unix.html

2、解压

安装xz :yum -y install xz
xz -d rabbitmq-server-generic-unix-3.7.17.tar.xz tar -xvf rabbitmq-server-generic-unix-3.7.17.tar

3、安装

mkdir /usr/java/

mv rabbitmq-server-generic-unix-3.7.17 /usr/java/rabbitmq-server

cd /usr/java/rabbitmq-server/sbin

4、安装erlang

由于rabbitmq是erlang语言开发,所以需要该语言环境
    yum install erlang -y 

5、安装管理界面插件

rabbitmq-plugins enable     rabbitmq_management

6、运行mq

启动服务:rabbitmq-server -detached  或者 rabbitmq-server    start  
查看状态:rabbitmqctl status
关闭服务:rabbitmqctl stop    
查看插件列表:abbitmq-plugins list        
新增用户:rabbitmqctl  add_user  Username  Password
删除用户:rabbitmqctl  delete_user  Username
修改用户密码:rabbitmqctl  change_password  Username  Newpassword
查看当前用户列表:rabbitmqctl  list_users

7、验证是否启动

ss -tnalp 查看端口,如果有15672,则运行成功。

8、进入web界面

http://ip:15672/    初始账号/密码:guest/guest  

登录报错:User can only log in via localhost 
  原因:rabbitmq从3.3.0开始禁止使用guest/guest权限通过除localhost外的访问
解决方法:找到ebin/rabbit.app文件,将 {loopback_users, [<<"guest">>]},  改为{loopback_users, []}

 完毕!

#######springboot集成实践######

1、pom.xml文件添加依赖

 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-amqp -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
            <version>2.1.3.RELEASE</version>
        </dependency>

2、在yml文件中添加服务ip

#默认使用配置  #activemq
spring:
  rabbitmq:
    host: 132.232.44.82

3、RabbitMQConfig.java 这个文件不能少,否则启动报错(所有的消息的topic都要在这个文件进行注册)

package com.cn.commodity.config;

import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitMQConfig {
    //direct模式,直接根据队列名称投递消息
    @Bean
    public Queue logOpQueue(){
        return new Queue("oplog");
    }

    @Bean
    public Queue logErrQueue(){
        return new Queue("errlog");
    }

    //不要偷懒 一定要声明
    @Bean
    public Queue chatMessageQueue(){
        return new Queue("yang");
    }

    @Bean
    public Queue mapMessageQueue(){
        return new Queue("rabbitmq_map");
    }
}

4、RabbitmqProducer.java

package com.cn.commodity.controller;

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class RabbitmqProducer {
    @Autowired
    private RabbitTemplate rabbitTemplate;
    @RequestMapping(value = "testSend")
    public void testSend(String msg){
        rabbitTemplate.convertAndSend("yang","rabbitmq 发送消息:"+msg);
    }
    @RequestMapping(value = "testSendMap")
    public void testSendMap(String msg){
        rabbitTemplate.convertAndSend("rabbitmq_map","rabbitmq 发送消息:"+msg);
    }

}

5、RabbitmqConsumer.java

package com.cn.commodity.controller;

import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

@Component
public class RabbitmqConsumer {
    @RabbitHandler
    @RabbitListener(queues="yang" )
    public void showMessage(String message){
        System.out.println("yangwj接收到消息:"+message);
    }

    @RabbitHandler
    @RabbitListener(queues="rabbitmq_map" )
    public void showMessage(){
        Map map = new HashMap();
        map.put("1","大爷你好");
        System.out.println("yangwj接收到消息:"+map);
    }
}

启动运行,完毕!

 

posted @ 2019-08-06 16:42  小白啊小白,Fighting  阅读(366)  评论(0编辑  收藏  举报