当前位置: 首页 > wzjs >正文

营销者网站国外设计模板网站

营销者网站,国外设计模板网站,深圳推广平台有哪些,wordpress纯代码添加海报RabbitMQ基础知识 一、RabbitMQ简介 1.1 什么是RabbitMQ? RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据。 1.2 核心概念 Producer:消息生产者Consumer:消息消费者Exchange&#…

RabbitMQ基础知识

一、RabbitMQ简介

1.1 什么是RabbitMQ?

RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据。

1.2 核心概念

  • Producer:消息生产者
  • Consumer:消息消费者
  • Exchange:交换机,负责消息路由
  • Queue:队列,存储消息
  • Binding:绑定,交换机和队列之间的关系
  • Channel:信道,建立在Connection上的虚拟连接
  • Connection:TCP连接

1.3 应用场景

  • 异步处理
  • 应用解耦
  • 流量削峰
  • 日志处理
  • 消息通讯

二、安装与配置

2.1 安装RabbitMQ

# Windows安装
# 1. 安装Erlang
# 2. 下载并安装RabbitMQ
# 3. 启用管理插件
rabbitmq-plugins enable rabbitmq_management# Linux安装
sudo apt-get update
sudo apt-get install rabbitmq-server# Docker安装
docker run -d --hostname my-rabbit --name rabbit -p 5672:5672 -p 15672:15672 rabbitmq:management

2.2 基础配置

# application.properties
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/

三、交换机类型

3.1 Direct Exchange

// 声明交换机
@Bean
public DirectExchange directExchange() {return new DirectExchange("direct.exchange");
}// 声明队列
@Bean
public Queue directQueue() {return new Queue("direct.queue");
}// 绑定关系
@Bean
public Binding directBinding() {return BindingBuilder.bind(directQueue()).to(directExchange()).with("direct.routingKey");
}

3.2 Topic Exchange

// 声明交换机
@Bean
public TopicExchange topicExchange() {return new TopicExchange("topic.exchange");
}// 声明队列
@Bean
public Queue topicQueue1() {return new Queue("topic.queue1");
}// 绑定关系
@Bean
public Binding topicBinding1() {return BindingBuilder.bind(topicQueue1()).to(topicExchange()).with("topic.#");  // #匹配0个或多个单词
}

3.3 Fanout Exchange

// 声明交换机
@Bean
public FanoutExchange fanoutExchange() {return new FanoutExchange("fanout.exchange");
}// 声明队列
@Bean
public Queue fanoutQueue1() {return new Queue("fanout.queue1");
}// 绑定关系
@Bean
public Binding fanoutBinding1() {return BindingBuilder.bind(fanoutQueue1()).to(fanoutExchange());
}

3.4 Headers Exchange

// 声明交换机
@Bean
public HeadersExchange headersExchange() {return new HeadersExchange("headers.exchange");
}// 声明队列
@Bean
public Queue headersQueue() {return new Queue("headers.queue");
}// 绑定关系
@Bean
public Binding headersBinding() {return BindingBuilder.bind(headersQueue()).to(headersExchange()).whereAll("header1", "value1").match();
}

四、消息发送与接收

4.1 消息生产者

@Service
public class MessageProducer {@Autowiredprivate RabbitTemplate rabbitTemplate;// 发送消息public void sendMessage(String exchange, String routingKey, Object message) {rabbitTemplate.convertAndSend(exchange, routingKey, message);}// 发送带确认的消息public void sendMessageWithConfirm(String exchange, String routingKey, Object message) {CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());rabbitTemplate.convertAndSend(exchange, routingKey, message, correlationData);}
}

4.2 消息消费者

@Component
public class MessageConsumer {// 简单消费@RabbitListener(queues = "direct.queue")public void receiveMessage(String message) {System.out.println("Received message: " + message);}// 手动确认消费@RabbitListener(queues = "direct.queue")public void receiveMessageManual(String message, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) throws IOException {try {// 处理消息System.out.println("Received message: " + message);// 手动确认channel.basicAck(tag, false);} catch (Exception e) {// 消息重回队列channel.basicNack(tag, false, true);}}
}

五、高级特性

5.1 消息确认机制

// 配置
spring.rabbitmq.publisher-confirm-type=correlated
spring.rabbitmq.publisher-returns=true// 实现确认回调
@Bean
public RabbitTemplate.ConfirmCallback confirmCallback() {return (correlationData, ack, cause) -> {if (ack) {System.out.println("消息发送成功");} else {System.out.println("消息发送失败:" + cause);}};
}// 实现返回回调
@Bean
public RabbitTemplate.ReturnCallback returnCallback() {return (message, replyCode, replyText, exchange, routingKey) -> {System.out.println("消息路由失败:" + replyText);};
}

5.2 死信队列

// 声明死信交换机
@Bean
public DirectExchange deadLetterExchange() {return new DirectExchange("dlx.exchange");
}// 声明死信队列
@Bean
public Queue deadLetterQueue() {return new Queue("dlx.queue");
}// 声明普通队列,并指定死信交换机
@Bean
public Queue normalQueue() {Map<String, Object> args = new HashMap<>();args.put("x-dead-letter-exchange", "dlx.exchange");args.put("x-dead-letter-routing-key", "dlx.routingKey");return new Queue("normal.queue", true, false, false, args);
}

5.3 延迟队列

// 声明延迟交换机
@Bean
public CustomExchange delayExchange() {Map<String, Object> args = new HashMap<>();args.put("x-delayed-type", "direct");return new CustomExchange("delay.exchange", "x-delayed-message", true, false, args);
}// 发送延迟消息
public void sendDelayMessage(String message, int delayTime) {rabbitTemplate.convertAndSend("delay.exchange", "delay.routingKey", message, messagePostProcessor -> {messagePostProcessor.getMessageProperties().setDelay(delayTime);return messagePostProcessor;});
}

六、集群部署

6.1 普通集群模式

# 1. 配置hosts
192.168.1.101 rabbit1
192.168.1.102 rabbit2
192.168.1.103 rabbit3# 2. 同步Erlang Cookie
scp /var/lib/rabbitmq/.erlang.cookie root@rabbit2:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@rabbit3:/var/lib/rabbitmq/# 3. 加入集群
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbit1
rabbitmqctl start_app

6.2 镜像集群模式

# 设置镜像策略
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

七、监控与运维

7.1 监控指标

  • 队列数量
  • 消息数量
  • 连接数量
  • 消费者数量
  • 交换机数量

7.2 常用命令

# 查看队列
rabbitmqctl list_queues# 查看交换机
rabbitmqctl list_exchanges# 查看绑定关系
rabbitmqctl list_bindings# 查看连接
rabbitmqctl list_connections# 查看消费者
rabbitmqctl list_consumers

八、最佳实践

8.1 开发规范

  1. 命名规范
    • 使用有意义的交换机和队列名称
    • 使用统一的命名规则
    • 避免特殊字符
  2. 消息处理
    • 保证消息可靠性
    • 处理消息幂等性
    • 合理设置重试机制
  3. 性能优化
    • 合理使用预取数量
    • 控制消息大小
    • 适当的并发数量

8.2 运维规范

  1. 监控告警
    • 监控队列积压
    • 监控消费者状态
    • 监控集群状态
  2. 容量规划
    • 评估消息量
    • 规划硬件资源
    • 合理设置集群规模
  3. 安全管理
    • 访问控制
    • 加密传输
    • 定期备份

文章转载自:

http://Ccki1Fma.sqqdy.cn
http://ayfunFG9.sqqdy.cn
http://fiiikeqI.sqqdy.cn
http://S4FO6ap7.sqqdy.cn
http://iPIc8WN5.sqqdy.cn
http://CEPR7IGF.sqqdy.cn
http://M34eSmU6.sqqdy.cn
http://WJrnz67a.sqqdy.cn
http://6NBWsuqZ.sqqdy.cn
http://4dnMOw4P.sqqdy.cn
http://j5mQbUAl.sqqdy.cn
http://bKbrlX6K.sqqdy.cn
http://iJPF4U7k.sqqdy.cn
http://Ftx2fD0M.sqqdy.cn
http://4F7L4SqH.sqqdy.cn
http://0oJpoeRe.sqqdy.cn
http://zsDybt2w.sqqdy.cn
http://LEzNmgWZ.sqqdy.cn
http://Jgv46ccH.sqqdy.cn
http://dHQSbdFS.sqqdy.cn
http://5ueSfoDt.sqqdy.cn
http://xzXE7bdp.sqqdy.cn
http://wxCEIWhy.sqqdy.cn
http://DyKBnf1e.sqqdy.cn
http://bpdHVfDb.sqqdy.cn
http://FkPoTPIQ.sqqdy.cn
http://QjSXWPmh.sqqdy.cn
http://MQ6gfmyL.sqqdy.cn
http://0tKKbPP0.sqqdy.cn
http://xQGOjMwn.sqqdy.cn
http://www.dtcms.com/wzjs/629525.html

相关文章:

  • 哪个网站做脚本收费企业邮箱哪家好
  • 网站索引量暴增粉末涂料 技术支持 东莞网站建设
  • p2p网站开发 源代码裤子seo关键词
  • 利用百度云做网站哪些网站可以做代理
  • 查询网网站有哪些竞价网站
  • 建站哪个便宜wordpress shortlink
  • 百度网站关键词优化在哪里做网站改版一般需要多久
  • 做网站对客户有什么帮助软件工程师岗位职责
  • 济南做网站推广有哪些公司本科自考是什么意思啊
  • 小学门户网站建设值得浏览的国外网站
  • 微信开发小程序开发网站建设做网站的法律
  • 网站建设的基本特点江门seo推广公司
  • 网页手游百度seo点击软件
  • 北京公司网站制作免费平台推广
  • 怎么不花钱建立网站如何在阿里巴巴做网站
  • 创建网站要申请域名吗台州网站公司建站
  • 公司网站开发说明介绍武义做网站
  • 网站搭建设计 是什么网站开发自学网站
  • 建筑装饰和网站建设哪个好企业网站建设条件
  • 类似凡科建站的平台工程公司名字大全
  • 网站添加在线qq聊天深圳logo设计公司推荐
  • 邢台建设局官方网站dede网站qq类文章源码
  • 怎么查看网站死链接网站开发调研
  • 用wordpress建站的好处110平米三室一厅简装图片
  • 免费网站免费进入在线贵阳网站建设报价
  • 免费网站建设创意移动网站建设方案
  • 承德网站设计公司wordpress插件mip
  • 做外贸去哪个网站找客户官方网站app大全
  • 网站建设 完成专业的外贸行业网站开发
  • 微电影网站源码xiazaiwordpress调用留言