闲碎记事本 闲碎记事本
首页
  • JAVA
  • Cloudflare
  • 学完再改一遍UI
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

YAN

我要偷偷记录...
首页
  • JAVA
  • Cloudflare
  • 学完再改一遍UI
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • java

    • SpringBoot

    • SpringSecurity

    • MybatisPlus

    • Netty

    • sip

    • 其他

      • MDC 使用
      • 位运算
      • RedisMQ实现
        • 自定义枚举序列化
        • Mybatis使用自定义枚举
        • Jackson反序列化泛型注意点
        • 敏感词过滤算法
        • 线程
        • 并发学习
        • jni使用
        • 关于注释
        • 为什么一个Byte用两个16进制表示
        • JAVA获取系统信息
        • 对extends和super的理解
        • JAVA系统API
        • java探针初探
        • JAVA获取USB信息
        • HashMap初探
        • JAVA远程调试
        • 初探webflux
        • SSE示例
    • linux

    • docker

    • redis

    • nginx

    • mysql

    • 其他

    • 环境搭建

    • 知识库
    • java
    • 其他
    Yan
    2023-03-06
    目录

    RedisMQ实现

    # 发布过期通知

      public enum PubType {
        /**
         * 发布计划
         * 此次测试使用 需要新增通知类型需要自行添加
         */
        PLAN("pub:plan"),
        /**
         * 到期通知
         * 此次测试使用 需要新增通知类型需要自行添加
         */
        EXPIRED_NOTICE("expired:notice"),
    
        //.....
        ;
        private final String prefix;
      }
    

    发布消息

      PubType.PLAN.pub(key,10);
      //或者
      PubType.EXPIRED_NOTICE.pub(key,10);
    

    处理消息

    @Slf4j
    //标注消息类型 【重要】
    @RedisMessage(PubType.PLAN)
    //注册为bean
    @Component
    public class PlanRedisHandler implements IRedisMessage {
    
        @Override
        public void exec(String key) {
            //具体代码实现 TODO
            log.info("类型:{},唯一标识:{} 执行过期操作",PubType.PLAN,key);
        }
    
    }
    
    

    # pubsub

    定义消息

    /**
     * 自定义消息 继承 AbstractChannelMessage
     */
    public class StringChannel extends AbstractChannelMessage {
        @Override
        public String getChannel() {
            return "pub-test";
        }
    }
    

    定义消息生产者

    
    @Component
    public class StringChannelMessageProducer implements IMessageChannelProducer<StringChannel> {
    
        @Resource
        private RedisMQTemplate redisMQTemplate;
    
        @Override
        public void send(Object message) {
    
        }
    
        @Override
        public void send(StringChannel message) {
            redisMQTemplate.send(message);
        }
    }
    
    

    定义消息消费者

    
    @Component
    public class StringChannelMessageConsumer extends AbstractChannelMessageListener<StringChannel> {
        /**
         * 处理消息
         *
         * @param message 消息
         */
        @Override
        public void onMessage(StringChannel message) {
            log.info("消费 MQ Pub  {},消息:{}", message.getChannel(), JsonUtils.toJson(message.getHeaders()));
        }
    }
    
    

    # stream mq

    定义消息

    /**
     * 自定义消息 继承 AbstractStreamMessage
     */
    public class StringStreamChannel extends AbstractStreamMessage {
    
        @Override
        public String getStreamKey() {
            return "pub-stream";
        }
    }
    

    定义消息生产者

    
    @Component
    public class StringStreamMessageProducer implements IMessageStreamProducer<StringStreamChannel> {
    
        @Resource
        private RedisMQTemplate redisMQTemplate;
    
    
        @Override
        public void send(Object message) {
    
        }
    
        @Override
        public RecordId send(StringStreamChannel message) {
            return redisMQTemplate.send(message);
        }
    
    }
    
    

    定义消息消费者

    
    @Component
    public class StringStreamMessageConsumer extends AbstractStreamMessageListener<StringStreamChannel> {
        /**
         * 处理消息
         * @param message 消息
         */
        @Override
        public void onMessage(StringStreamChannel message) {
            log.info("消费 MQ Stream Key {},消息:{}", message.getStreamKey(), JsonUtils.toJson(message.getHeaders()));
        }
    }
    
    
    上次更新: 2025/05/22, 07:52:48
    位运算
    自定义枚举序列化

    ← 位运算 自定义枚举序列化→

    最近更新
    01
    Caddy操作指南
    04-25
    02
    虚拟机磁盘扩展
    04-22
    03
    Swap空间
    04-22
    更多文章>
    Theme by Vdoing | Copyright © 2022-2025 YAN | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式