菠菜网站怎么做推广定制开发小程序和模板小程序
news/
2025/9/23 16:02:51/
文章来源:
菠菜网站怎么做推广,定制开发小程序和模板小程序,思维导图在线制作网站,特效比漂亮的网站使用银行卡消费的时候#xff0c;银行往往会通过微信、短信或邮件通知用户这笔交易的信息#xff0c;这便是一种发布订阅模式#xff0c;这里的发布是交易信息的发布#xff0c;订阅则是各个渠道。这在实际工作中十分常用#xff0c;Redis 支持这样的一个模式。
发布订阅…使用银行卡消费的时候银行往往会通过微信、短信或邮件通知用户这笔交易的信息这便是一种发布订阅模式这里的发布是交易信息的发布订阅则是各个渠道。这在实际工作中十分常用Redis 支持这样的一个模式。
发布订阅模式首先需要消息源也就是要有消息发布出来比如例子中的银行通知。首先是银行的记账系统收到了交易的命令成功记账后它就会把消息发送出来这个时候订阅者就可以收到这个消息进行处理了观察者模式就是这个模式的典型应用了。下面用图描述这样的一个过程。
这里建立了一个消息渠道短信系统、邮件系统和微信系统都在监听这个渠道一旦记账系统把交易消息发送到消息渠道则监听这个渠道的各个系统就可以拿到这个消息这样就能处理各自的任务了。它也有利于系统的拓展比如现在新增一个彩信平台只要让彩信平台去监听这个消息渠道便能得到对应的消息了。
我们可以知道以下两点 要有发送的消息渠道让记账系统能够发送消息。要有订阅者短信、邮件、微信等系统订阅这个渠道的消息。同样的Redis 也是如此。首先来注册一个订阅的客户端这个时候使用 SUBSCRIBE 命令。
比如监听一个叫作 chat 的渠道这个时候我们需要先打开一个客户端这里记为客户端 1然后输入命令
SUBSCRIBE chat这个时候客户端 1 就会订阅了一个叫作 chat 渠道的消息了。之后打开另外一个客户端记为客户端 2输入命令
publish chat lets go!!这个时候客户端 2 就向渠道 chat 发送消息
lets go!!我们观察客户端 1就可以发现已经收到了消息并有对应的信息打印出来。Redis 的发布订阅过程如下图所示。 当发布消息的时候对应的客户端已经获取到了这个信息。
下面在 Spring 的工作环境中展示如何配置发布订阅模式。首先提供接收消息的类它将实现 org.springframework.data.redis.connection.MessageListener 接口并实现接口定义的方法 public void onMessageMessage message,byte[]patternRedis 发布订阅监听类代码如下所示。
/*** imports ***/
public class RedisMessageListener implements MessageListener {private RedisTemplate redisTemplate;/*** 此处省略redisTemplate的 setter和getter方法 ***/Overridepublic void onMessage(Message message, byte[] bytes) {// 获取消息byte[] body message.getBody();// 使用值序列化器转换String msgBody (String) getRedisTemplate().getValueSerializer().deserialize(body);System.err.println(msgBody);// 获取 channelbyte[] channel message.getChannel();// 使用字符串序列化器转换String channelStr (String) getRedisTemplate().getStringSerializer().deserialize(channel);System.err.println(channelStr);// 渠道名称转换String bytesStr new String(bytes);System.err.println(bytesStr);}
}为了在 Spring 中使用这个类需要对其进行配置。
bean idredisMsgListener classcom.redis.listener.RedisMessageListenerproperty nameredisTemplate refredisTemplate/
/bean这样就在 Spring 上下文中定义了监听类。
有了监听类还不能进行测试。为了进行测试要给一个监听容器在 Spring 中已有类 org.springframework.data.redis.listener.RedisMessageListenerContainer。它可以用于监听 Redis 的发布订阅消息下面的配置就是为了实现这个功能大家可以通过注释来了解它的配置要点。
bean idtopicContainerclassorg.springframework.data.redis.listener.RedisMessageListenerContainer destroy-methoddestroy!--Redis连接工厂 --property nameconnectionFactory refconnectionFactory /!--连接池这里只要线程池生存才能继续监听 --property nametaskExecutorbeanclassorg.springframework.scheduling.concurrent.ThreadPoolTaskSchedulerproperty namepoolSize value3 //bean/property!--消息监听Map --property namemessageListenersmap!-- 配置监听者key-ref和bean id定义一致 --entry key-refredisMsgListener!--监听类 --bean classorg.springframework.data.redis.listener.ChannelTopicconstructor-arg valuechat //bean/entry/map/property
/bean这里配置了线程池这个线程池将会持续的生存以等待消息传入而这里配置了容器用 id 为 redisMsgListener的Bean 进行对渠道 chat 的监听。当消息通过渠道 chat 发送的时候就会使用 id 为 redisMsgListener 的 Bean 进行处理消息。
通过以下代码测试 Redis 发布订阅。
public static void main(String[] args) {ApplicationContext applicationContext new ClassPathXmlApplicationContext(applicationContext.xml);RedisTemplate redisTemplate applicationContext.getBean(RedisTemplate.class);String channel chat;redisTemplate.convertAndSend(channel, I am lazy!!);
}convertAndSend 方法就是向渠道 chat 发送消息的当发送后对应的监听者就能监听到消息了。运行它后台就会打出对应的消息。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913086.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!