1. 介绍
介绍如何使用AMQP,队列使用rabbitMQ
2. 介绍rabbitMQ的监控和安全控制
到rabbitmq 官网下载安装包
安装rabbitMQ后,默认守候端口5672,提供用户guest/guest
启用监控管理台:进入rabbitMQ安装目录,后进入sbin目录,使用rabbitmq-plugins.bat list查看已安装的插件列表,使用 rabbitmq-plugins.bat enable rabbitmq_management 命令开启网页版控制台。
重启RabbitMQ服务(rabbitmqctl stop_app , rabbitmqctl start_app )
在浏览器输入 http:localhost:15672进入控制台
默认guest用户只能通过localhost域名登陆管理控制台进行监控管理,
可以通过将ebin目录下rabbit.app中loopback_users里的[guest]删除,或者在配置文件rabbitmq.config中对该项进行配置
3. 使用
gradle中增加
implementation('org.springframework.boot:spring-boot-starter-amqp')
在application.yml中配置:
spring.rabbitmq.host: localhost
spring.rabbitmq.port: 32770
spring.rabbitmq.username: guest
spring.rabbitmq.password: guest
创建发送类
@Component
public class Sender {
@Autowired
private RabbitTemplate rabbitTemplate;
public void send() {
this.rabbitTemplate.convertAndSend("foo", new String("hello"));
}
}
创建接收类
import org.springframework.amqp.core.Queue;
@Component
@RabbitListener(queues = "foo")
public class Receiver {
@Bean
public Queue fooQueue() {
return new Queue("foo");
}
@RabbitHandler
public void process(@Payload Object foo) {
System.out.println(new Date().format('yyyy-MM-dd hh:mm:sss') + ": " + foo);
}
}
创建集成调用操作类
public class SampleController {
@Autowired
Sender sender;
@RequestMapping(value = "/")
public String index(){
sender.send();
return "/front/index"
}
}
访问SampleController,则console中看到输出,说明消息发送、并接收成功
Thu Sep 21 16:23:08 CST 2017: (Body:'hello' MessageProperties [headers={}, timestamp=null, messageId=null, userId=null, receivedUserId=null, appId=null, clusterId=null, type=null, correlationId=null, correlationIdString=null, replyTo=null, contentType=text/plain, contentEncoding=UTF-8, contentLength=0, deliveryMode=null, receivedDeliveryMode=PERSISTENT, expiration=null, priority=0, redelivered=false, receivedExchange=, receivedRoutingKey=foo, receivedDelay=null, deliveryTag=1, messageCount=0, consumerTag=amq.ctag-CJsKellpiTysUIMPw9Nwzg, consumerQueue=foo])
4. 配合docker使用
安装docker,运行Kitematic,下载官方的offical rabbitmq的image文件。
start 本地的rabbitmq 容器,可以修改容器的IP、端口映射。
修改application.yml的文件相关设定,即可使用docker容器中的rabbitmq服务,避免本地安装相关服务。