rabbitmq笔记
程序员文章站
2022-07-15 08:13:12
...
安装请点 安装参考
rabbitmqctl set_permissions -p v_host user “.” “.” “.*”
rabbitmqctl list_vhosts
rabbitmqctl list_queues
注意:执行完命令后没有 …….down 也是正确的,别问我咋知道,反正一切正常,我也不知道为什么
备忘:我自己设置的用户名是root,密码是root
管理工具内容介绍
rabbitmq与java程序交互的端口是 5672
各种队列模式
依赖包
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.4.0.RELEASE</version>
</dependency>
1 简单队列
2 work模式
a 平均分配
b 能者多劳:应用场景,如果向数据库写数据压力过大,要搞集群,好多台机子做的都是相同的事情,但又不能重复写入数据,就可以用work模式的能者多劳
// 同一时刻服务器只会发一条消息给消费者,平均分配和能者多劳代码区别
channel.basicQos(1);
确认模式机制
// 监听队列,手动返回完成中间的值是false,自动确认中间的值是true
channel.basicConsume(QUEUE_NAME, false, consumer);
// 返回确认状态
channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
3 订阅模式
商品数据同步
一个生产者生产的数据同时被多个消费者获得
注意:如果将消息发送到一个没有队列绑定的交换机,消息将丢失
因为交换机没有存储消息的能力,消息只能存到队列
4 路由模式
5 通配符模式