RabbitMQ
安装Erlang
RabbitMQ 安装需要依赖 Erlang 环境
$ cd /opt
$ wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm
$ yum install erlang-19.0.4-1.el7.centos.x86_64.rpm
安装 RabbitMQ
$ cd /opt
$ wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10-1.el7.noarch.rpm
$ yum install rabbitmq-server-3.6.10-1.el7.noarch.rpm
启动服务
$ service rabbitmq-server start
服务状态
$ service rabbitmq-server status
# service rabbitmq-server status
Redirecting to /bin/systemctl status rabbitmq-server.service
● rabbitmq-server.service - RabbitMQ broker
Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2017-08-16 11:43:33 CST; 8s ago
Main PID: 17919 (beam)
Status: "Initialized"
CGroup: /system.slice/rabbitmq-server.service
├─17919 /usr/lib64/erlang/erts-8.0.3/bin/beam -W w -A 64 -P 1048576 -t 5000000 -stbt db -zdbbl 32000 -K true -- -root /usr/lib64/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /us...
├─18062 /usr/lib64/erlang/erts-8.0.3/bin/epmd -daemon
├─18160 erl_child_setup 1024
├─18165 inet_gethost 4
└─18166 inet_gethost 4
Aug 16 11:43:32 localhost.localdomain rabbitmq-server[17919]: RabbitMQ 3.6.10. Copyright (C) 2007-2017 Pivotal Software, Inc.
Aug 16 11:43:32 localhost.localdomain rabbitmq-server[17919]: ## ## Licensed under the MPL. See http://www.rabbitmq.com/
Aug 16 11:43:32 localhost.localdomain rabbitmq-server[17919]: ## ##
Aug 16 11:43:32 localhost.localdomain rabbitmq-server[17919]: ########## Logs: /var/log/rabbitmq/rabbit@localhost.log
Aug 16 11:43:32 localhost.localdomain rabbitmq-server[17919]: ###### ## /var/log/rabbitmq/rabbit@localhost-sasl.log
Aug 16 11:43:32 localhost.localdomain rabbitmq-server[17919]: ##########
Aug 16 11:43:32 localhost.localdomain rabbitmq-server[17919]: Starting broker...
Aug 16 11:43:33 localhost.localdomain rabbitmq-server[17919]: systemd unit for activation check: "rabbitmq-server.service"
Aug 16 11:43:33 localhost.localdomain systemd[1]: Started RabbitMQ broker.
Aug 16 11:43:33 localhost.localdomain rabbitmq-server[17919]: completed with 0 plugins.
查看日志
$ less /var/log/rabbitmq/rabbit@localhost.log
=INFO REPORT==== 16-Aug-2017::11:43:32 ===
Starting RabbitMQ 3.6.10 on Erlang 19.0.4
Copyright (C) 2007-2017 Pivotal Software, Inc.
Licensed under the MPL. See http://www.rabbitmq.com/
=INFO REPORT==== 16-Aug-2017::11:43:32 ===
node : rabbit@localhost
home dir : /var/lib/rabbitmq
config file(s) : /etc/rabbitmq/rabbitmq.config (not found)
cookie hash : kuUba2xGLitNNO48qE0Hrg==
log : /var/log/rabbitmq/rabbit@localhost.log
sasl log : /var/log/rabbitmq/rabbit@localhost-sasl.log
database dir : /var/lib/rabbitmq/mnesia/rabbit@localhost
=INFO REPORT==== 16-Aug-2017::11:43:33 ===
Memory limit set to 390MB of 976MB total.
=INFO REPORT==== 16-Aug-2017::11:43:33 ===
Enabling free disk space monitoring
=INFO REPORT==== 16-Aug-2017::11:43:33 ===
Disk free limit set to 50MB
=INFO REPORT==== 16-Aug-2017::11:43:33 ===
Limiting to approx 924 file handles (829 sockets)
=INFO REPORT==== 16-Aug-2017::11:43:33 ===
FHC read buffering: OFF
FHC write buffering: ON
=INFO REPORT==== 16-Aug-2017::11:43:33 ===
Database directory at /var/lib/rabbitmq/mnesia/rabbit@localhost is empty. Initialising from scratch...
=INFO REPORT==== 16-Aug-2017::11:43:33 ===
Waiting for Mnesia tables for 30000 ms, 9 retries left
=INFO REPORT==== 16-Aug-2017::11:43:33 ===
Waiting for Mnesia tables for 30000 ms, 9 retries left
显示没有找到日志文件,创建一个;
$ cd /etc/rabbitmq/
$ vi rabbitmq.config
编辑内容
[{rabbit, [{loopback_users, []}]}].
- 这里的意思是开放使用,rabbitmq默认创建的用户guest,密码也是guest,这个用户默认只能是本机访问,localhost或者127.0.0.1,从外部访问需要添加上面的配置
重启
$ service rabbitmq-server restart
开启管理UI
$ /sbin/rabbitmq-plugins enable rabbitmq_management
重启
访问
通过浏览器访问 http://ip:15672
创建新用户
$ rabbitmqctl add_user zhao 123456
用户授权
$ rabbitmqctl set_permissions -p "/" zhao".*" ".*" ".*"
添加角色
$ rabbitmqctl set_user_tags zhao administrator
查看权限
$ rabbitmqctl list_users
清除权限
rabbitmqctl clear_permissions -p / zhao
注意
保证服务器 5672、15672 端口开放状态;
SpringBoot 与 RabbitMQ 整合
创建SpringBoot项目;
在pom文件中 添加对amqp依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
application.properties文件中对rabbitmq配置:
spring.application.name=spirng-boot-rabbitmq-sender
spring.rabbitmq.host=(ip)
spring.rabbitmq.port=5672 (这里是5672,在浏览器UI登录时端口为15672)
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
用户名可以是上面新创建用户
采用Direct模式
配置Queue(消息队列)
@Configuration
public class SenderConf {
@Bean
public Queue queue() {
return new Queue(“queue”);
}
}
发送端
@Component
public class HelloSender {
@Autowired
private AmqpTemplate template;
public void send() {
template.convertAndSend("queue","hello,rabbit~");
}
}
controller 模拟发送
@Controller
@RequestMapping("/rabbit")
public class HelloController {
@Autowired
private HelloSender helloSender;
@PostMapping("/sender")
public void testRabbit() {
helloSender.send();
}
接受者
@Component
public class HelloReceive {
@RabbitListener(queues="queue") //监听器监听指定的Queue
public void processC(String str) {
System.out.println("Receive:"+str);
}
}
成功接收