redis发布、订阅
来源:互联网 发布:deepin linux安装g 编辑:程序博客网 时间:2024/06/04 01:07
@Setterpublic final class RedisUserLoginRegisterSubscribe extends JedisPubSub { private static final Logger log = LoggerFactory.getLogger(REDIS_SUBPUB_LOGGER_NAME); /** * 订阅处理 */ private final static ExecutorService executorService = Executors.newFixedThreadPool(32); /** * Redis 连接池 */ private JedisPool jedisPool; /** * 用户注册订阅处理器 */ private UserLoginRegisterSubscribeProcessor userRegisterSubscribeProcessor; private boolean isSubscribe = true; public void init() { executorService.execute(() -> { log.info("初始化用户注册订阅..."); while (isSubscribe) { try (Jedis jedis = jedisPool.getResource()) { jedis.subscribe(this, USER_REGISTER_PUBSUB_CHANNEL); } catch (Exception ex) { log.error(ex.getMessage(),ex); } try { Thread.sleep(500); } catch (InterruptedException e) { } } }); } public void destroy() { log.info("用户注册订阅开始销毁处理..."); if (!executorService.isShutdown()) { executorService.shutdown(); } log.info("用户注册订阅销毁处理成功..."); } @Override public void onMessage(String channel, String message) { executorService.execute(() -> { log.info("收到消息 channel:{}, message:{}", channel, message); UserLoginRegisterMessage userRegisterMessage = JSONObject.parseObject(message, UserLoginRegisterMessage.class); userRegisterMessage.setChannel(channel); userRegisterSubscribeProcessor.process(userRegisterMessage); }); } @Override public void onPUnsubscribe(String pattern, int subscribedChannels) { isSubscribe = false; } @Override public void onUnsubscribe(String channel, int subscribedChannels) { isSubscribe = false; }}订阅处理接口
public interface UserLoginRegisterSubscribeProcessor { /** * 订阅接受到用户注册消息的处理 * * @param message {@link UserLoginRegisterMessage} */ void process(UserLoginRegisterMessage message);}redis发布:
rs = jedis.publish(USER_REGISTER_PUBSUB_CHANNEL, JSON.toJSONString(userRegisterMessage));订阅:
* <bean id="userRegisterSubscribeProcessor" class="...实现类"/>** <bean id="redisUserRegisterSubscribe" init-method="init" destroy-method="destroy"* class="com.***.usercore.sdk.pubsub.RedisUserLoginRegisterSubscribe">* <property name="jedisPool" ref="jedisPool"/>* <property name="userRegisterSubscribeProcessor" ref="userRegisterSubscribeProcessor"/>* </bean>
阅读全文
0 0
- 六.redis 发布订阅
- Redis:六、发布、订阅
- .redis 发布订阅
- 六.redis 发布订阅
- Redis:六、发布、订阅
- redis代码 发布订阅
- Redis 发布与订阅
- redis发布和订阅
- Redis 发布订阅
- Redis 发布与订阅
- Redis 订阅与发布
- Redis 发布与订阅
- redis实现发布/订阅
- Redis发布订阅模式
- redis 订阅 发布
- Redis 发布订阅
- Redis-发布与订阅
- redis订阅和发布
- 基于 Token 的身份验证
- 第四次:三维场景图像认知与多模态学习
- 对字符串进行阴影处理---swift3
- java集合操作的包装类Collections(包含集合的排序)
- 多台web服务器之间共享Session
- redis发布、订阅
- java字符串的替换replace、replaceAll、replaceFirst的区别详解
- Ubuntu 交叉编译 OpenSSL,并在 Android 中使用
- 协同过滤推荐算法详解
- 超级吊的ExpandableListView三级目录
- HI3520D音频
- vue入门
- 如何给webApp应用添加动态水印?并且不影响页面的交互事件
- securecrt 远程映射端口