java - 使用 Java 弹簧的 Redis Pub/Sub
问题描述
我使用 Java 创建具有单个主题和单个侦听器的 Redis Pub/Sub,例如谢谢:
那是我在 MvcConfigurer 中的 Bean:
@Bean
MessageListenerAdapter messageListener() {
return new MessageListenerAdapter(redisMsgHandler);
}
@Bean
public RedisMessageListenerContainer redisMessageListenerContainer() {
RedisMessageListenerContainer mlc = new RedisMessageListenerContainer();
mlc.setConnectionFactory(lettuceConnectionFactory());
mlc.addMessageListener(messageListener(), topic());
return mlc;
}
@Bean
ChannelTopic topic() {
return new ChannelTopic("pubsub:queue");
}
那是我收到消息的地方,请不要将此 RedisMsghandler 类用于 MvcConfigurer
public class RedisMsgHandler implements MessageListener {
@Override
public void onMessage(Message message, byte[] bytes) {
//impl goes here
}
}
我的主要目标是创建多个主题和多个侦听器,例如 RedisMsgHandler,请让我知道该怎么做。
我对创建大量在 MessageListener 上实现的类以及为每个主题创建大量 bean 感到不舒服
解决方案
设法修复它:
@Bean
public RedisMessageListenerContainer redisMessageListenerContainer() {
RedisMessageListenerContainer mlc = new RedisMessageListenerContainer();
mlc.setConnectionFactory(lettuceConnectionFactory());
mlc.addMessageListener(new MessageListenerAdapter(redisMsgHandler),
new ChannelTopic("pubsub:queue");
mlc.addMessageListener(new MessageListenerAdapter(redisMsgHandlerAnother),
new ChannelTopic("pubsub:Otherqueue");
return mlc;
}
推荐阅读
- c++ - 如何删除已在 CMD 中特定位置输出的字符?
- react-native - AWS Amplify 发送到 React-Native App 的 PushNotification 中缺少图像
- python - 替换存储在字典中的特定 numpy 数组中的条目
- google-apps-script - 我们如何使用 Google App Script 格式化电子邮件
- r - 将值分配给R中的覆盖?
- python - 如何合并两个字典
- javascript - 在输入中接受十进制值
- jquery - 如果应用了 css 过渡,为什么动画回调函数会立即触发?
- asp.net - 使用 IOT Hub Manager 获取 IOT 设备的当前 IP 地址或位置
- windows - 如何配置 TFS 2018 shell 扩展以使用正确的工作区?