怎么利用能实现复述的订阅与发布

  介绍

怎么利用能实现复述的订阅与发布?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

<强>什么是复述,发布订阅

复述,发布订阅是一种消息通信模式,发送者通过通道一个发送消息消息,订阅过通道一的客户端就可以接收到消息消息。嗯度娘上面的解释要比我所说的好多了,而我所理解的就是:所谓的订阅发布模式,其实和我们看电视、听广播差不多,在我们没有调台(换频道)的时候,那个频道也是在传递消息的(发布)。我们换到那个频道上(订阅)就能接收到消息了。是的,虽然可能有些不恰当~

首先声明,有关复述,服务器的搭建工作,请自行查阅相关资料进行环境抢建

听说复述中发布与订阅只有简单的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等相关注解,便于开发,有兴趣可自行查阅弹簧相关资料。

怎么利用能实现复述的订阅与发布