Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

What is the publish and subscribe function of redis

2025-01-20 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Database >

Share

Shulou(Shulou.com)06/01 Report--

What is redis 'publish-subscribe feature? In response to this problem, this article introduces the corresponding analysis and solution in detail, hoping to help more small partners who want to solve this problem find a simpler and easier way.

order

Redis provides simple publish and subscribe functionality, which is easier to use than professional MQ for appropriate scenarios (e.g., consumers are not required to receive offline messages when they are not online). This article mainly records how to use redis publish and subscribe function in SpringBoot.

Definition of producer

configured

@Bean MyPublisher redisPublisher(RedisConnectionFactory factory) { return new MyPublisher( redisTemplate(factory), topic() ); } @Bean ChannelTopic topic() { return new ChannelTopic( "pubsub:queue" ); }

producer instance

public class MyPublisher { private final RedisTemplate

< String, Object >

template; private final ChannelTopic topic; private final AtomicLong counter = new AtomicLong( 0 ); public MyPublisher( final RedisTemplate

< String, Object >

template, final ChannelTopic topic ) { this.template = template; this.topic = topic; } @Scheduled( fixedDelay = 100 ) public void publish() { template.convertAndSend( topic.getTopic(), "Message " + counter.incrementAndGet() + ", " + Thread.currentThread().getName() ); }}

Defining consumers

configured

//subscribe @Bean MessageListenerAdapter messageListener() { return new MessageListenerAdapter( new MyMessageListener() ); } @Bean RedisMessageListenerContainer redisContainer(RedisConnectionFactory factory) { final RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(factory); container.addMessageListener(messageListener(), topic()); return container; }

consumer instances

public class MyMessageListener implements MessageListener { @Override public void onMessage( final Message message, final byte[] pattern ) { System.out.println( "Message received: " + message.toString() ); }}

run

. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.3.2.RELEASE)2016-02-16 00:14:08.190 INFO 1481 --- [ main] com.codecraft.RedisdemoApplication : Starting RedisdemoApplication on Jupiter.local with PID 1481 (/Users/codecraft/workspace/redisdemo/target/classes started by codecraft in /Users/codecraft/workspace/redisdemo)2016-02-16 00:14:08.193 INFO 1481 --- [ main] com.codecraft.RedisdemoApplication : No active profile set, falling back to default profiles: default2016-02-16 00:14:08.242 INFO 1481 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@140e5a13: startup date [Tue Feb 16 00:14:08 CST 2016]; root of context hierarchy2016-02-16 00:14:09.756 INFO 1481 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup2016-02-16 00:14:09.763 INFO 1481 --- [ main] o.s.c.support.DefaultLifecycleProcessor : Starting beans in phase 02016-02-16 00:14:09.807 INFO 1481 --- [ main] o.s.c.support.DefaultLifecycleProcessor : Starting beans in phase 21474836472016-02-16 00:14:09.897 INFO 1481 --- [ main] com.codecraft.RedisdemoApplication : Started RedisdemoApplication in 2.215 seconds (JVM running for 2.589)Message received: "Message 1, pool-1-thread-1"Message received: "Message 2, pool-1-thread-1"Message received: "Message 3, pool-1-thread-1"Message received: "Message 4, pool-1-thread-1"Message received: "Message 5, pool-1-thread-1"Message received: "Message 6, pool-1-thread-1"Message received: "Message 7, pool-1-thread-1"Message received: "Message 8, pool-1-thread-1"Message received: "Message 9, pool-1-thread-1"Message received: "Message 10, pool-1-thread-1" about redis publish subscription function is what the answer to the question is shared here, I hope the above content can be of some help to everyone, if you still have a lot of doubts not solved, you can pay attention to the industry information channel to learn more related knowledge.

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Database

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report