Java操作Redis(六)--Java操作Redis实现消息队列


在这里插入图片描述
在这里插入图片描述

1.消息发布者:实现消息发布的功能

package com.ruoyi.project.redis.messgaeQueue;

import redis.clients.jedis.Jedis;

/**
 * 消息发布者
 * 1.建立两个Jedis客户端
 * 2.建立两个发布/订阅监听器
 * 3.启动两个线程。分别用于监听频道和模式
 */
public class MessagePublisher {

    @SuppressWarnings("resource")
    public static void main(String[] args) {
        final Jedis jedis = new Jedis("127.0.0.1", 6379);
        final Jedis pjedis = new Jedis("127.0.0.1", 6380);

        final MessageSubscriber listener = new MessageSubscriber();
        final MessageSubscriber plistener = new MessageSubscriber();

        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                jedis.subscribe(listener, "mychannel");
            }
        });
        Thread pthread = new Thread(new Runnable() {
            @Override
            public void run() {
                pjedis.psubscribe(plistener, "mychannel.*");
            }
        });

        thread.start();
        pthread.start();
    }

}

2.消息订阅者:实现消息的订阅消费功能

package com.ruoyi.project.redis.messgaeQueue;

import redis.clients.jedis.JedisPubSub;

/**
 * 消息订阅者
 * 监听器会对频道和模式的订阅,接收消息和退订等事件进行监听,然后进行相应的处理
 */
public class MessageSubscriber extends JedisPubSub {
    //消息订阅成功的处理
    public void onMessage(String channel, String message) {
        System.out.println("onMessage:" + channel + "=" + message);
        if (message.equals("quit")) {
            this.unsubscribe(channel);
        }
    }

    //订阅初始化
    public void onSubscribe(String channel, int subscribedChannels) {
        System.out.println("onSubscribe:" + channel + "=" + subscribedChannels);
    }

    //取消订阅
    public void onUnsubscribe(String channel, int subscribedChannels) {
        System.out.println("onUnsubscribe:" + channel + "=" + subscribedChannels);
    }

    //按模式的方式订阅
    public void onPSubscribe(String pattern, int subscribedChannels) {
        System.out.println("onPSubscribe:" + pattern + "=" + subscribedChannels);
    }

    //取消模式方式的订阅
    public void onPUnsubscribe(String pattern, int subscribedChannels) {
        System.out.println("onPUnsubscribe:" + pattern + "=" + subscribedChannels);
    }

    //处理消息订阅模式
    public void onPMessage(String pattern, String channel, String message) {
        System.out.println("onPMessage:" + pattern + "=" + channel + "=" + message);
        if (message.equals("quit")) {
            this.punsubscribe(pattern);
        }
    }


}

3.按照上面说明完成基础配置

3.2 在启动2个Redis服务端

完成启动Redis服务后,运行main方法,如下,项目处于消息订阅状态

D:\software\Redis>redis-server D:\software\Redis\redis.windows-6379.conf
D:\software\Redis>redis-server D:\software\Redis\redis.windows-6380.conf

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1在启动2个Redis客户端

D:>cd D:\software\Redis
D:\software\Redis>redis-cli -p 6379
D:\software\Redis>redis-cli -p 6380

在这里插入图片描述

3.2 分别在两个客户端中执行以下命令发送消息

publish mychannel “hello redis”
publish mychannel.redis “hello redis”
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值