rabbitmq
RabbitMQ 是部署最广泛的开源消息代理
RabbitMQ 是一个消息代理:它接受和转发消息
您可以将其视为邮局:当您将要投递的邮件放入邮箱时,您可以确定 Mailperson 先生或女士最终会将邮件投递给您的收件人
在这个比喻中,RabbitMQ 是一个邮箱、一个邮局和一个邮递员
RabbitMQ 和邮局之间的主要区别在于它不处理纸张,而是接受、存储和转发二进制数据块 -消息
RabbitMQ可以用于开发异步接口
大名鼎鼎的RabbitMQ当然不止如此
具体可参见:
消息队列、消息代理和消息中间件的区别和联系
集成rabbitmq
- 首先你得有个rabbitmq 可以本地安装 也可以在docker上安装 这都随你 在docker上安装 rabbitmq
docker run -d --hostname rabbit-host --name rabbitmq -e RABBITMQ_DEFAULT_USER=hong -e RABBITMQ_DEFAULT_PASS=82576 -p 15672:15672 -p 9125:5672 rabbitmq:3-management
如果你碰到端口占用的情况 docker: Error response from daemon: Ports are not available: listen tcp 0.0.0.0:9001: bind: An attempt was
made to access a socket in a way forbidden by its access permissions. 可以先通过netsh interface ipv4 show excludedportrange
protocol=tcp查看不允许你用的端口 然后你换前面那个端口就可以了
C:\WINDOWS\system32>netsh interface ipv4 show excludedportrange protocol=tcp
协议 tcp 端口排除范围
开始端口 结束端口
---------- --------
80 80
1024 1123
1124 1223
1224 1323
1324 1423
1524 1623
1679 1778
1795 1894
4924 5023
5041 5140
5141 5240
5241 5340
5357 5357
5358 5457
5665 5764
5765 5864
8925 9024
9025 9124
50000 50059 *
* - 管理的端口排除。
C:\WINDOWS\system32>docker run -d --hostname rabbit-host --name rabbitmq -e RABBITMQ_DEFAULT_USER=hong -e RABBITMQ_DEFAULT_PASS=82576 -p 15672:15672 -p 9125:5672 rabbitmq:3-management
52d3204fba5811234ac56fb7b158577a9983b8dd0fc6cc42756a9de4995afaf7
- 加入你rabbitmq的starter
<!-- RabbitMQ;)-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<!-- RabbitMQ:~ -->
- 配置你的rabbitmq信息
# rabbitmq相关配置
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=xxx
spring.rabbitmq.password=xxx
- 配置rabbitmq队列
/**
* rabbitmq 配置队列
*/
@Configuration
public class RabbitConfig {
/**
* 定义一个名为:hong 的队列
* @return org.springframework.amqp.core.Queue
*/
@Bean
public Queue hongQueue() {
return new Queue("hong");
}
}
- 配置队列处理
/**
* 消息队列处理
*/
@Component
@RabbitListener(queues = "hong")
public class Consumer {
Logger log = LoggerFactory.getLogger(Consumer.class);
/**
* @RabbitHandler 指定消息的处理方法
* @param message
*/
@RabbitHandler
public void process(String message) {
log.info("接收的消息为: {}", message);
}
}
- 启动验证
rabbit-message-rate rabbit-success-log{"msg":"hello,rabbitmq已发送","code":"200"}
网友评论