java使用redis发布和订阅消息

来源:互联网 发布:有了域名如何建站 编辑:程序博客网 时间:2024/05/23 00:41

1.使用maven导入相关的jar包

<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.7.2</version></dependency>


2. 发布者

package com.tbs.redis;import java.io.ByteArrayOutputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectOutputStream;import com.tbs.common.entity.Order;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPubSub;public class RedisPublish {    public static void main(String[] args) throws IOException{      System.out.println("发布者 ");      Jedis jRedis = new Jedis("localhost");            jRedis.publish("JRedisChat","my name is chenLong");  //          jRedis.publish("JRedisChat1","Hello chenLong!");            Order o=new Order();// 一个实体类..          ByteArrayOutputStream byt=new ByteArrayOutputStream();          ObjectOutputStream obj=new ObjectOutputStream(byt);          obj.writeObject(o);                    byte[] bytes=byt.toByteArray();          // 可写入byte和字符串.          jRedis.publish("JRedisChat1".getBytes(),bytes);     }  }



3,订阅者

package com.tbs.redis;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPubSub;public class RedisSub1 {    public static void main(String[] args){      System.out.println("订阅者..1");        final Jedis jRedis = new Jedis("localhost");                  JedisPubSub jedisPubSub=new JedisPubSub() {              @Override              public void onMessage(String channel, String message) {              // 执行订阅消息                super.onMessage(channel, message);                //终止订阅                super.unsubscribe();                System.out.println(message);            }          };          jRedis.subscribe(jedisPubSub,"JRedisChat1");      }  }



4.先运行订阅着,再运行发布者,就会看到订阅者会打印出发布者的内容.

感觉还是mq好用一点.