springboot 2.xredis実装メッセージキュー
2574 ワード
一.共通メッセージキューツール
現在よく使われているメッセージキューには、RabbitMQなどのAMQPシリーズ、Kafka、Redisなどのkev valueシリーズの3種類があり、それらの使用シーンはそれぞれ 1.RabbitMQ:データの非同期処理タスクのシリアル実行など、比較的重量級が高い同時の場合. 2.Kafka:Pullのモードに基づいて処理して、具体的にとても高いスループット、一般的にログの記憶と収集を行います. 3.Redis:軽量レベルの高同時性、リアルタイム性の要求が高い場合、例えばキャッシュ、秒殺、タイムリーなデータ分析
2.SpringBoot Redisベースの統合メッセージチーム
1.メッセージの発行:redisTemplateを使用する.convertAndSend
@RestController
@RequestMapping
public class PublisherController {
@Autowired
private RedisTemplate
2.メッセージ購読package com.cxm.consumer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.PatternTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
@Configuration
public class RedisSubConfig {
/**
*
*
* @param connectionFactory
* @param adapter
* @return
*/
@Bean
public RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
MessageListenerAdapter adapter) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
// channel
container.addMessageListener(adapter, new PatternTopic("demochannel"));
return container;
}
/**
*
* @param message
* @return
*/
@Bean
public MessageListenerAdapter adapter(RedisMessageListener message) {
// onMessage RedisMessage , RedisMessage
return new MessageListenerAdapter(message, "onMessage");
}
}
MessageListener @Component
public class RedisMessageListener implements MessageListener {
@Autowired
private RedisTemplate
1.メッセージの発行:redisTemplateを使用する.convertAndSend
@RestController
@RequestMapping
public class PublisherController {
@Autowired
private RedisTemplate
2.メッセージ購読
package com.cxm.consumer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.PatternTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
@Configuration
public class RedisSubConfig {
/**
*
*
* @param connectionFactory
* @param adapter
* @return
*/
@Bean
public RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
MessageListenerAdapter adapter) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
// channel
container.addMessageListener(adapter, new PatternTopic("demochannel"));
return container;
}
/**
*
* @param message
* @return
*/
@Bean
public MessageListenerAdapter adapter(RedisMessageListener message) {
// onMessage RedisMessage , RedisMessage
return new MessageListenerAdapter(message, "onMessage");
}
}
MessageListener
@Component
public class RedisMessageListener implements MessageListener {
@Autowired
private RedisTemplate