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

信息技术网站开发最近一周新闻大事摘抄2022年

信息技术网站开发,最近一周新闻大事摘抄2022年,网站商城微信支付接口,阜新小程序 阜新网站建设开发构建高可用消息队列系统 01 引言1. RabbitMQ简介介绍1.1 什么是RabbitMQ1.2 RabbitMQ的核心特性1.3 RabbitMQ与AMQP 2.安装RabbitMQ3.消息队列实践总结 引言 在当今互联网时代,消息队列系统扮演着至关重要的角色,它们被广泛应用于分布式系统、微服务架构…

构建高可用消息队列系统 01

  • 引言
  • 1. RabbitMQ简介介绍
    • 1.1 什么是RabbitMQ
    • 1.2 RabbitMQ的核心特性
    • 1.3 RabbitMQ与AMQP
  • 2.安装RabbitMQ
  • 3.消息队列实践
  • 总结

引言

在当今互联网时代,消息队列系统扮演着至关重要的角色,它们被广泛应用于分布式系统、微服务架构以及异步通信等领域。RabbitMQ作为最流行的开源消息队列之一,具有高可用性、可靠性和灵活性,本篇博客将深入探讨RabbitMQ的高级应用,包括简介介绍、安装配置以及实际案例分析。

1. RabbitMQ简介介绍

1.1 什么是RabbitMQ

RabbitMQ是一个开源的消息代理软件,实现了高级消息队列协议(AMQP),并提供了可靠的消息传递、灵活的路由、消息确认机制等特性。它是一个强大的工具,用于构建分布式系统中的异步通信和解耦,同时也适用于构建大规模的数据处理系统。RabbitMQ的核心概念包括交换机、队列、绑定等,通过这些概念,可以实现灵活的消息路由和处理。在分布式系统中,RabbitMQ能够提供高可用性、可靠性和灵活性,使得系统能够更好地应对高并发和大规模数据处理的挑战。

1.2 RabbitMQ的核心特性

  • 消息持久化:RabbitMQ允许消息持久化到磁盘,即使在代理重启后也不会丢失。这对于关键业务数据的可靠性至关重要。
  • 消息确认机制:RabbitMQ支持消息的确认机制,生产者可以收到消息代理已经成功接收消息的确认,确保消息不会丢失。
  • 灵活的路由规则:RabbitMQ的灵活的路由规则允许消息根据不同的条件被路由到不同的队列,从而实现复杂的消息处理逻辑。
  • 高可用性:RabbitMQ支持集群和镜像队列,可以实现高可用性的消息队列系统,即使某个节点发生故障,系统仍然能够正常运行。
  • 可靠性:RabbitMQ通过消息确认机制和持久化等特性,保证了消息传递的可靠性,即使在网络故障或者节点故障的情况下也能够保证消息不丢失。

1.3 RabbitMQ与AMQP

RabbitMQ是一个实现了高级消息队列协议(AMQP)的消息代理软件。AMQP是一种面向消息的中间件标准协议,旨在提供统一的消息传递模型,以便不同的消息中间件系统可以进行互操作。、

RabbitMQ完全实现了AMQP 0-9-1版本,这意味着它遵循了AMQP协议定义的消息格式、交换机、队列、绑定等核心概念,同时也支持AMQP定义的高级特性,如事务、确认机制等。

通过遵循AMQP协议,RabbitMQ能够与其他支持AMQP的消息中间件系统进行无缝集成,实现跨平台、跨语言的消息传递。这使得开发人员可以更加灵活地选择适合自己业务需求的消息中间件系统,同时也为系统的可扩展性和互操作性提供了保障。

2.安装RabbitMQ

拉取Rabbitmq镜像

docker pull rabbitmq:managemen

开启两个端口,5672,15672

firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --zone=public --add-port=15672/tcp --permanent

更新防火墙

firewall-cmd --reload

查看开放端口

firewall-cmd --zone=public --list-ports

在这里插入图片描述

然后创建容器

docker run -d \
--name my-rabbitmq \
-p 5672:5672 -p 15672:15672 \
--hostname my-rabbitmq-host \
-e RABBITMQ_DEFAULT_VHOST=my_vhost \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
--restart=always \
rabbitmq:management

创建好了就可以访问了
在这里插入图片描述
创建用户
在这里插入图片描述
给他分配一个my_vhost权限
在这里插入图片描述
现在RabbitMQ安装设置好了

3.消息队列实践

创建一个空项目
并创建两个maven项目,分别对应着消费者和生产者
在这里插入图片描述
分别写好yml文件
消费者8999,生产者8888(端口号)

server:port: 8888
spring:rabbitmq:host: 192.168.238.129password: 123456port: 5672username: springvirtual-host: my_vhost

在生产者项目中放一个消息队列,并取名,firstQueue是队列名字

@Configuration
@SuppressWarnings("all")
public class RabbitConfig {
@Bean
public Queue firstQueue() {
return new Queue("firstQueue");
}public Queue secondQueue() {return new Queue("secondQueue");}
}

导这个包
在这里插入图片描述
然后准备一个发消息的Controller

package com.example.publiuse;import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author 叶秋* @site* @company 卓京公司* @create 2024-01-19 20:10*/
@RestController
public class TestController {@Autowiredprivate AmqpTemplate amqpTemplate;@RequestMapping("/send1")public String send1(){//向消息队列发送消息amqpTemplate.convertAndSend("firstQueue","hello");return "哈哈;";}
}

访问一手

消息队列显示
在这里插入图片描述
消费者监听

@Component
@SuppressWarnings("all")
@Slf4j
@RabbitListener(queues = "firstQueue")
public class Receiver {
@RabbitHandler
public void process(String msg) {
log.warn("接收到:" + msg);
}
}

http://localhost:8888/send1 访问几次
然后被监听
在这里插入图片描述
这样就大大解除了代码的耦合性

  • 另一个案例:
    新建一个User类,生成消费都需要
@SuppressWarnings("all")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable{
private String username;
private String userpwd;
}

生产者事件

 @RequestMapping("/send2")public String send2() throws Exception{//向消息队列发送消息User user = new User("yh", "123");String string = objectMapper.writeValueAsString(user);amqpTemplate.convertAndSend("secondQueue",string);return "哈哈;";}

消费者监听

package com.example.consumer;import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Component
@SuppressWarnings("all")
@Slf4j
@RabbitListener(queues = "secondQueue")
public class Receiver2 {@Autowiredprivate ObjectMapper objectMapper;
@RabbitHandler
public void process(String string) throws  Exception{User user = objectMapper.readValue(string, User.class);log.warn("接收到:" + user);
}
}

总结

通过本篇博客的学习,读者将深入了解RabbitMQ的核心概念、高级特性以及实际应用场景,掌握如何搭建高可用的消息队列系统,为构建稳定、可靠的分布式系统提供有力支持。

http://www.mmbaike.com/news/88514.html

相关文章:

  • 织梦做淘宝客网站视频软件开发公司排名
  • 有没有做机械加工的网站西安计算机培训机构哪个最好
  • 二级黄冈站外贸网站大全
  • 青岛的网站建设公司职业技能培训机构
  • thinkphpcmf网站开发网站制作网站推广
  • 回收那个网站做推广好百度认证平台官网
  • 手机网页加速器广州网站排名优化公司
  • 企业网站主页模板新闻热搜榜 今日热点
  • 长春企业做网站网络营销方式哪些
  • 做招聘网站的背景图片宁波seo关键词优化制作
  • 网站建设私单软文的目的是什么
  • 做照片视频的网站百度推广网站一年多少钱
  • 建设网站网站台州seo快速排名
  • 微信公众号网页设计网络优化公司
  • 个人制作的网站模板班级优化大师网页版登录
  • 那个网站做网站托管黑帽seo论坛
  • 乌鲁木齐网站建设中心网络推广引流
  • 南京做公司网站的公司企业网站建设方案
  • 青岛定制网站设计公司手机百度app安装下载
  • 专业做包包的网站好网络营销相关的岗位有哪些
  • 在哪家网站做推广好关键词优化排名用哪个软件比较好
  • wordpress网站后台百度旗下的所有产品
  • 用什么网软件做网站百度互联网营销是什么
  • 注册公司虚拟地址购买seo长尾关键词排名
  • 做网站建设注册商标是多少类东莞网站到首页排名
  • 火影忍者做网站的图片百度首页优化排名
  • 石家庄网站建设培训班百度电话号码查询平台
  • 自己做服务器的网站吗广告联盟接单平台
  • 创业做网站需要哪些必备条件地域名网址查询
  • 北京电子商务网站建设市场营销毕业论文5000字