//某个服务的具体情况
ps -ef | grep XXX
//杀死进程
kill -9 进程ID,第一个
//查看内存
free或者top
//查看磁盘使用情况
df -l
//寻找文件
find -name xxx
//查看端口使用情况
netstat -an | grep 15672
文章目录
一、 RabbitMQ安装:
1.1更新
sudo agt-get update
1.2安装erlang环境
yum install erlang
1.3安装rabbitMQ环境
sudo apt-get install rabbitmq-server
1.4 启用RabbitMQWeb管理插件
不启用你的http://ip+15672访问不到
rabbitmq-plugins enable rabbitmq_management
1.5 常用命令
启动、停止、重启、状态rabbitMq命令:
启动:sudo rabbitmq-server start
关闭: sudo rabbitmq-server stop
重启: sudo rabbitmq-server restart
查看状态:sudo rabbitmqctl status
1.6查看启动状态
root@yan:/# service rabbitmq-server status
● rabbitmq-server.service - RabbitMQ Messaging Server
Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2018-11-08 20:15:25 CST; 7min ago
Process: 16987 ExecStop=/usr/sbin/rabbitmqctl stop (code=exited, status=0/SUCCESS)
Process: 17074 ExecStartPost=/usr/lib/rabbitmq/bin/rabbitmq-server-wait (code=exited, status=0/SUCCESS)
Main PID: 17073 (rabbitmq-server)
Tasks: 70
Memory: 39.6M
CPU: 1.538s
CGroup: /system.slice/rabbitmq-server.service
├─17073 /bin/sh /usr/sbin/rabbitmq-server
├─17084 /bin/sh -e /usr/lib/rabbitmq/bin/rabbitmq-server
├─17171 /usr/lib/erlang/erts-7.3/bin/epmd -daemon
├─17211 /usr/lib/erlang/erts-7.3/bin/beam -W w -A 64 -P 1048576 -K true -B i -- -root /usr/lib/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /usr/lib/ra
├─17312 inet_gethost 4
└─17313 inet_gethost 4
Nov 08 20:15:23 yan systemd[1]: Stopped RabbitMQ Messaging Server.
Nov 08 20:15:23 yan systemd[1]: Starting RabbitMQ Messaging Server...
Nov 08 20:15:23 yan rabbitmq[17074]: Waiting for rabbit@yan ...
Nov 08 20:15:23 yan rabbitmq[17074]: pid is 17084 ...
Nov 08 20:15:25 yan systemd[1]: Started RabbitMQ Messaging Server.
lines 1-22/22 (END)
1.7添加用户
添加admin用户,密码设置为admin。
sudo rabbitmqctl add_user admin admin
赋予权限
sudo rabbitmqctl set_user_tags admin administrator
赋予virtual host中所有资源的配置、写、读权限以便管理其中的资源
sudo rabbitmqctl set_permissions -p / admin '.*' '.*' '.*'
1.8访问:
二、 spring boot整合rabbitMQ
2.1 配置pom包,主要是添加spring-boot-starter-amqp的支持
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2.2配置文件
配置rabbitmq的安装地址、端口以及账户信息
-
一定不要把端口号设置成15672,因为那个已经被占用了,所以你新设置一个5672
-
同时添加到阿里云服务器安全组配置
spring.application.name=Spring-boot-rabbitmq
spring.rabbitmq.host=101.200.55.12
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=你的密码
2.3重启,并打开http://ip+15672就能看到一个连接信息了
如图有一个admin连接上了
三、springboot实现消费者和生产者模式
新建如下几个文件
3.1 单个主题(hello)队列配置
//队列配置
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() {
return new Queue("hello");
}
}
3.2 单个主题(hello)生产者
// 发送者
// rabbitTemplate是springboot 提供的默认实现
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 = "这是发送的信息 "+"---------------------" + new Date();
System.out.println("=============================");
System.out.println("Sender : " + context);
System.out.println("=============================");
this.rabbitTemplate.convertAndSend("hello", context);
}
}
3.3 单个主题(hello)消费者
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("------------------1--------------------");
System.out.println("Receiver : " + hello);
System.out.println("-----------------1---------------------");
}
}
3.4 单个主题(hello)controller测试
// 新建一个controller测试
import cn.nxcoder.blog.rabbit.HelloSender;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class RabbitController {
@Autowired
private HelloSender helloSender;
/*
一个生产者和一个消费者
*/
@GetMapping("/rabbitHello")
@ResponseBody
public void hello( ) {
helloSender.send();
}
}
//用postman本地测试
http://localhost:8088/rabbitHello
//测试结果
=============================
Sender : 这是发送的信息 ---------------------Fri Nov 09 15:09:01 CST 2018
=============================
15:09:01.188 [http-nio-8088-exec-1] INFO c.n.blog.handler.LogAspectHandler - ======执行方法后,执行该方法======
15:09:01.188 [http-nio-8088-exec-1] INFO c.n.blog.handler.LogAspectHandler - Result:null
------------------1--------------------
Receiver : 这是发送的信息 ---------------------Fri Nov 09 15:09:01 CST 2018
-----------------1---------------------
以上最简单的单个生产者与消费者的MQ完成了
四、 一个生产者,多个消费者的情况
4.1 配置生产者方法
在我门的生产者里面新家一个sendMsg
方法,该方法需要传参
看下面的,hello不能变,或者说是必须和你的消费者引用的名称要一样,这里我就没有改
this.rabbitTemplate.convertAndSend("hello", sendMsg);
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 = "这是发送的信息 "+"---------------------"
+ new Date();
System