AliMQ简谈
ALiMQ(Alibaba Message Queue)是阿里巴巴集团自主研发的一款高性能、高可用的分布式消息中间件,主要用于解决大规模分布式系统中的异步通信、流量削峰、系统解耦等问题。以下是其核心特点和应用场景的简单介绍:
核心特点
高吞吐与低延迟
针对电商等高并发场景优化,支持每秒百万级消息处理,确保消息快速投递。
高可靠性
提供多副本冗余、持久化存储和故障自动恢复,保证消息不丢失。
水平扩展
支持集群动态扩容,可随业务增长灵活增加节点,提升整体容量。
丰富功能
顺序消息:保证消息严格有序(如订单状态变更)。
事务消息:实现分布式事务的最终一致性。
延迟消息:支持定时或延迟投递(如定时任务)。
生态兼容
兼容部分开源MQ协议(如RocketMQ/Kafka),便于迁移或与其他系统集成。
点击下载完整代码:
alimq集成到项目中代码示例https://pan.quark.cn/s/35bd8f3dfbfa
文章目录
核心参数
@Value("${ali.rocketmq.instanceUserName}")
private String instanceUserName;
@Value("${ali.rocketmq.instancePassword}")
private String instancePassword;
@Value("${ali.rocketmq.nameServer}")
private String nameServer;
@Value("${ali.rocketmq.userGroupId}")
private String userGroupId;
提示:以下是本篇文章正文内容,下面案例可供参考
一、注意要点
1.如果是使用公网接入点访问,则必须设置AccessKey和SecretKey,里面填写实例的用户名和密码。实例用户名和密码在控制台访问控制的智能身份识别页签中获取。
2.这里填写的不是阿里云账号的AccessKey ID和AccessKey Secret,请务必区分开。
3.如果是在阿里云ECS内网访问,则无需配置,服务端会根据内网VPC信息智能获取。
4.如果实例类型为Serverlesss实例,公网访问必须设置实例的用户名密码,当开启内网免身份识别时,内网访问可以不设置用户名和密码。
Consumer consumer = null;
Properties properties = new Properties();
// 设置为您在消息队列RocketMQ版控制台创建的Group ID。
properties.put(PropertyKeyConst.GROUP_ID, userGroupId);
/**
* 如果是使用公网接入点访问,则必须设置AccessKey和SecretKey,里面填写实例的用户名和密码。实例用户名和密码在控制台访问控制的智能身份识别页签中获取。
* 注意!!!这里填写的不是阿里云账号的AccessKey ID和AccessKey Secret,请务必区分开。
* 如果是在阿里云ECS内网访问,则无需配置,服务端会根据内网VPC信息智能获取。
* 如果实例类型为Serverlesss实例,公网访问必须设置实例的用户名密码,当开启内网免身份识别时,内网访问可以不设置用户名和密码。
*/
properties.put(PropertyKeyConst.AccessKey, instanceUserName);
properties.put(PropertyKeyConst.SecretKey, instancePassword);
//注意!!!使用ONS SDK访问RocketMQ 5.x实例时,InstanceID属性不需要设置,否则会导致失败。
// 设置为您从消息队列RocketMQ版控制台获取的接入点,类似“rmq-cn-XXXX.rmq.aliyuncs.com:8080”。
// 注意!!!直接填写控制台提供的域名和端口即可,请勿添加http://或https://前缀标识,也不要用IP解析地址。
properties.put(PropertyKeyConst.NAMESRV_ADDR, nameServer);
// 集群订阅方式(默认)。
// properties.put(PropertyKeyConst.MessageModel, PropertyValueConst.CLUSTERING);
// 广播订阅方式。
// properties.put(PropertyKeyConst.MessageModel, PropertyValueConst.BROADCASTING);
consumer = ONSFactory.createConsumer(properties);
consumer.subscribe(topicUser, "", basicOrgDataOnsConsumer);
consumer.start();
总结
ALiMQ是阿里内部多年沉淀的产物,部分技术已融入阿里云产品(如RocketMQ、Message Queue for Apache Kafka),对外提供商业化服务。