希望在被投新手帖之前能收到一些高手的指责
玩java3年多了,仍然只敢在新手区发帖的人伤不起……
想找自信,就去面试别人,想立志,还是要在eye发帖子
先是Redis的bean定义,@Configuration大赞!xml都见鬼去!
@Configuration
@PropertySource("classpath:mgr.properties")
//@ImportResource("classpath*:spring-config.xml")
public class RedisConf {
@Value("${redis.url}")
String redisUrl;
@Value("${redis.port}")
String redisPort;
@Bean
public JedisPoolConfig jedisPoolConfig(){
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxActive(50);
jedisPoolConfig.setMaxIdle(10);
jedisPoolConfig.setMaxWait(1000l);
jedisPoolConfig.setTestOnBorrow(true);
return jedisPoolConfig;
}
@Bean
public JedisShardInfo jedisShardInfo(){
return new JedisShardInfo(redisUrl, redisPort);
}
@Bean
public ShardedJedisPool shardedJedisPool(){
List<JedisShardInfo> jedisList = new ArrayList<JedisShardInfo>();
jedisList.add(jedisShardInfo());
return new ShardedJedisPool(jedisPoolConfig(), jedisList);
}
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer(){
return new PropertySourcesPlaceholderConfigurer();
}
}
主要的@Configuration
@Configuration
@Import(RedisConf.class)
public class MgrConf {...}
Queue实现
public class JedisQueue<T> {
private ShardedJedisPool shardedJedisPool;
private String suffix = "_";
private String name;
private Class<T> clazz;
public JedisQueue(ShardedJedisPool shardedJedisPool, Class<T> clazz) {
this.shardedJedisPool = shardedJedisPool;
this.clazz = clazz;
this.name = clazz.getName();
}
public JedisQueue(ShardedJedisPool shardedJedisPool, Class<T> clazz, String suffix) {
this.shardedJedisPool = shardedJedisPool;
this.name = clazz.getName();
this.clazz = clazz;
this.suffix += suffix;
this.name += this.suffix;
}
public void push(T... ts) {
ShardedJedis jedis = shardedJedisPool.getResource();
try {
for (T t : ts)
jedis.lpush(name, JsonUtils.toJson(t));
} finally {
shardedJedisPool.returnResource(jedis);
}
}
public void push(Collection<T> collection) {
ShardedJedis jedis = shardedJedisPool.getResource();
try {
for (T t : collection)
jedis.lpush(name, JsonUtils.toJson(t));
} finally {
shardedJedisPool.returnResource(jedis);
}
}
public T take() {
ShardedJedis jedis = shardedJedisPool.getResource();
try {
while (true) {
Threads.sleep(300l);
if (!jedis.exists(name))
continue;
String jsonT = jedis.rpop(name);
if (jsonT != null) {
return (T) JsonUtils.toT(jsonT, clazz);
}
}
} finally {
shardedJedisPool.returnResource(jedis);
}
}
}
调用Queue
@Autowired
public void init(ShardedJedisPool shardedJedisPool){
proxyQueue = JedisQueue.newQ(shardedJedisPool, Proxy.class);
tiredQueue = JedisQueue.newQ(shardedJedisPool, Proxy.class, "tired");
}
分享到:
相关推荐
通过redis队列实现的消息队列
redis的sorted set实现延时队列
基于Redis实现的简单消息队列。针对队列事务一致性等要求不高的情况下,也可以使用Redis消息队列实现服务间的通讯
利用redis rightPop 和 redis stream 实现消息队列
基于Redis实现的分布式队列,队列任务监控,任务超时、失败任务重试等特性
NewLife.Redis 是一个Redis客户端组件,以高性能处理大数据实时...高性能Redis协议封装,支持.Net Core,Redis协议基础实现Redis/RedisClient位于X组件,本库为扩展实现,主要增加列表结构、哈希结构、队列等高级功能。
这是一个可以扩展的队列处理程序,没有使用框架。我们的项目使用Yii的框架,所有这里的测试示例就按照Yii的方式来编写的。
2.4 redis缓存数据库 9 2.5 RabbitMQ消息队列 10 3 需求分析与设计 10 3.1 可行性分析 10 3.1.1技术可行性 10 3.1.2 经济可行性 11 3.1.3操作可行性 11 3.2 系统功能分析 11 3.3 系统功能结构图 11 3.4 系统流程图 ...
BBBUG聊天室API端,基于Thinkphp6实现API部分,命令行运行后台歌曲下载与同步任务,Redis做歌曲队列缓存。特色功能(创建房间、切换房间,房间权限与房间类型管理。点歌/切歌/听歌与歌曲播放进度同步。聊天、送歌等...
NewLife.Redis 是一个Redis客户端组件,以高性能处理大数据实时计算为目标。 Redis协议基础实现Redis/RedisClient位于X组件,本库为扩展实现,主要增加列表结构、哈希结构、队列等高级功能。
识,包括历史与特性、在开发和生产环境中部署运行Redis、数据类型与命令、使用Redis实现 队列、事务、复制、管道、持久化、优化Redis存储空间等内容,并采用任务驱动的方式介绍了 PHP、Ruby、Python和Node.js这4种...
redisson是java支持redis的redlock的唯一实现, 集成该项目后只需要极少的配置.就能够使用redisson的全部功能. 目前支持 集群模式,云托管模式,单Redis节点模式,哨兵模式,主从模式 配置. 支持 可重入锁,公平锁,联锁,红...
iot-ucy是使用java语言且基于netty, spring boot, redis等开源项目开发来的物联网网络中间件, 支持udp, tcp, 串口(com)通讯(window、linux、mac)等底层协议和http, mqtt,... 数据存储将使用taos数据库以及redis消息队列
一个 C++ Redis 客户端,天生就是为了在开源库上使用 Redis 和 C++ 的经验。提供简单高效的 hire 包装器,具有内存管理等 C++ 功能。连接池系统,支持使用 sentinel 的高可用性。一组有用的模式,可供使用并可与其他...
基于redis 实现的简单队列 整合redission 客户端 整合RocketMq 可调度定时任务简单实现 整合Shiro登录 SSO单点登录整合实例 模板引擎thymeleaf 整合注解式参数校验 关注程序员小强公众号更多编程趣事,知识心得与您...
【Java学习+面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。 介绍 对于 Java 初学者来说: 本文档倾向于给你提供一个比较详细的学习路径,让你对于Java整体的知识体系有一个初步认识。另外,本文的...
spring boot等框架实现的物联网中间件, 已支持tcp、udp、mqtt、mqtt网关、websocket、modbus、dtu适配(AT协议)、dtu+modbus(tcp和rtu) 适配,plc (西门子, 欧姆龙),串口等常用物联网协议,并且支持快速接入redis、...
程序员面试刷题的书哪个好 技术栈: 前端使用 HTML,CSS,JQuery以及Thymeleaf,Bootstrap技术框架。 后端使用SpringBoot 搭建项目,JSR303 做校验器,MyBatis持久层框架。 中间件使用了消息队列RabbitMQ进行异步...
activeMQ消息队列的使用 nginx+tomcat实现负载均衡 fastDFS 图片服务器的使用 cms系统的搭建使用 redis/redisCluster添加系统缓存 solr/solrCloud实现商品搜索功能,solrJ的使用 freemarker页面静态化,提高访问速度...