怎么利用能实现复述的订阅与发布?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
<强>什么是复述,发布订阅强>
复述,发布订阅是一种消息通信模式,发送者通过通道一个发送消息消息,订阅过通道一的客户端就可以接收到消息消息。嗯度娘上面的解释要比我所说的好多了,而我所理解的就是:所谓的订阅发布模式,其实和我们看电视、听广播差不多,在我们没有调台(换频道)的时候,那个频道也是在传递消息的(发布)。我们换到那个频道上(订阅)就能接收到消息了。是的,虽然可能有些不恰当~
首先声明,有关复述,服务器的搭建工作,请自行查阅相关资料进行环境抢建
听说复述中发布与订阅只有简单的6个命令。即:
<强> PSUBSCRIBE模式(模式……)强>
<强>订阅一个或者多个符合模式格式的频道强>
<强>发布渠道消息强>
<强>发布消息到香奈儿中强>
<强> PUBSUB子命令(参数(参数…]]强>
<强>查看订阅与发布系统状态强>
<强> PUNSUBSCRIBE[模式(模式……]]强>
<强>退订所有符合格式的频道强>
<强>订阅通道(通道……)强>
<强>订阅一个或者多个频道强>
<强>退订(通道(通道……]]强>
<>强取消订阅频道强>
连接复述后键入命令
订阅研究这样便订阅了一个名为研究的频道。
接下来研究频道要发消息啦。~ ~
另开启一个客户端,我使用的是品字形布局的最上面那个做为发布者,键入
出版研究“message1-go go"
可以看的到,当客户端1在研究频道发布消息时,客户端2(已订阅研究频道)可以接收到c1发布的消息,而客户端3由于没有订阅研究频道,所以接收不到c1发送的消息。
现在,跟着博主左手,右手一个慢动作。在c3中键入
PSUBSCRIBE研究*
好的,现在在c1中键入
出版研究“message2"
上结果图:
c3采用的通配符的形式,也将研究频道给订阅成功了。
接下来,在c1中继续键入命令:
出版研究:java“我讨厌java forever"
可以看到,使用psubscribe不仅将研究频道订阅了,而且将以研究为首的频道也订阅了。
在c1中键入pubsub通道,可以获得:
127.0.0.1:6379>PUBSUB渠道 1)“study"
意为当前正在活跃的频道。
好了,上面通过命令行熟悉了一下复述中有关订阅发布者模式的相关命令。下面我们要将复述的订阅与发布者嵌入到项目中。
然后我们先从命令行处进行消息发布:
之后,我们使用能在项目中进行消息发布:
我们可以进行正常的通信~噢耶~
<强>核心代码:强>
PublishMessage。java用于开启一个发布消息的线程
LoggerFactory.getLogger (ChatSubscribe.class);//取得订阅的消息后的处理 @Override 公共空间>私人日志记录器=LoggerFactory.getLogger (SubScribeMessage.class); 私人ExecutorService cachedThreadPool=Executors.newCachedThreadPool (); @ 私人JedisCluster JedisCluster;/* * *订阅频道 * * @param通道频道 * @param roomSubListerner */公共空间subscribeChannel(最终字符串通道,最终ChatSubscribe roomSubListerner) { cachedThreadPool。执行(新Runnable () { @Override 公共空间run () { jedisCluster。订阅(roomSubListerner、通道); } }); } jedisCluster是否封装工具类,取自各位看官,核心代码已给出,请各位看官根据自身业务与逻辑,自行更改与优化代码。 本次示例程序采用tomcat 9.0 +弹簧+ springmvc 使用了诸如:@RestController @GetMapping等相关注解,便于开发,有兴趣可自行查阅弹簧相关资料。怎么利用能实现复述的订阅与发布