struts2+spring使用redis的发布订阅功能

写在前面:前几天项目中实现了redis的发布订阅功能,才没两天居然忘得差不多了,赶紧整理记录一下!

环境

jdk1.8
tomcat8
IDEA
!默认大家已经集成了redis,redis相关配置就不说了。

发送消息的PubServiceImpl.java

@Service
public class PubServiceImpl implements PubService {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Autowired
    private ChannelTopic channelTopic;


    public void Publisher(String message) {
        stringRedisTemplate.convertAndSend(channelTopic.getTopic(), message);
    }
}

接受消息的SubServiceImpl.java

@Service
public class SubServiceImpl  implements SubService {
//    @Autowired
//    private ChannelTopic channelTopic;



    @Override
    public void onMessage(Message message, byte[] pattern) {
       //System.out.println("------channelTopic-------" + channelTopic.getTopic());
        String s = message.toString();
        String xiaoxi = "";
        String channel = "";
        String[] split = s.split(":");
        if(split!=null&&split.length==2){
            channel=split[0];
            xiaoxi=split[1];
        }
       // System.out.println(channel+","+xiaoxi);
        //收到消息之后可以去做你想做的事
       
    }

}

xml配置

<!-- Channel设置 -->
	<bean id="channelTopic" class="org.springframework.data.redis.listener.ChannelTopic">
		<constructor-arg value="user:topic" />
	</bean>
	<bean id="topicMessageListener" class="sy3.socket.service.impl.SubServiceImpl">
	</bean>
	<bean id="topicContainer" class="org.springframework.data.redis.listener.RedisMessageListenerContainer"  destroy-method="destroy">
		<property name="connectionFactory" ref="jedisConnectionFactory" />
		<property name="messageListeners">
			<map>
				<entry key-ref="topicMessageListener">
					<ref bean="channelTopic" />
				</entry>
			</map>
		</property>
	</bean>

使用过程中可能会出现消息频道无法注入的情况,这个时候就需要一个扫包的配置

<!-- 自动扫描dao和service包(自动注入) -->
	<context:component-scan base-package="你的service所在的目录" />

我们还需要给redis发布订阅配置一个stringRedisTemplate

  <bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
        <property name="connectionFactory" ref="jedisConnectionFactory"/>
        <property name="keySerializer">
            <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
        </property>
        <property name="hashKeySerializer">
            <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
        </property>
    </bean>

stringRedisTemplate和redisTemplate的区别自行百度

使用

使用就很简单了只要需要的地方注入pubService

 pubService.Publisher(“需要发送的消息”);

即可在subService中的Onmessage方法接收到消息。

  • 这篇写的很仓促,质量很差,如果有什么问题,看到的可以麻烦指出来,哈哈。
  • 刚写博客很多地方有不足的地,将就着看吧先,会慢慢改进的。其实就是菜= =
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我明白了。对于您的问题,我将按照您的要求进行回答,不会透露任何信息。以下是有关Struts、Spring Boot、PostgreSQL、Redis和Tomcat技术框架的选型描述,希望能够对您有所帮助。 首先,Struts是一个MVC框架,它能够帮助我们实现Web应用程序的组件化。它基于Java Servlet和JavaServer Pages(JSP)技术,能够让我们轻松地构建一个自包含的Web应用程序。Struts使用Action的概念来处理请求,和JSP进行视图渲染,模型(模型/视图/控制器)来处理业务逻辑,简单化了开发工作。因此,考虑到我们的Web应用需要良好的组件化和易用性,选择Struts框架是非常合适的。 然后,Spring Boot是一个基于Spring框架的快速开发应用程序的框架。Spring Boot能够帮助我们快速地搭建一个基于Spring框架的Web应用程序,因为它内置了许多绝对必要的功能,如自动配置等等。Spring Boot同时也可以集成很多其他的开发框架,如JPA、JDBC等等,使得应用程序开发更加快速和便捷。考虑到我们需要快速地完成应用程序的开发和集成其他框架的可能性,Spring Boot框架会是很好的选择。 接下来是PostgreSQL数据库。作为一款功能强大的关系型数据库,PostgreSQL已经被广泛地应用于数据库领域。PostgreSQL具有许多先进的功能,如查询优化、事务管理等等。此外,PostgreSQL还具有良好的跨平台能力和扩展性,并且在社区中有许多开发人员支持。因此,考虑到我们的应用程序需要处理大量数据,PostgreSQL是一个非常好的选择。 Redis是一个内存数据库,它能够存储键值对、列表、集合等等。Redis可以比较好地处理高吞吐量数据,能够应对内存中数据剪裁、过期策略等问题。此外,Redis还提供了一些高级数据结构和缓存技术,如分布式锁等。因此,如果我们需要一个可以快速响应和处理数据、同时还能提供高级数据结构和缓存技术,那么Redis框架是非常适合我们的需求。 最后,Tomcat是一个基于Java的Web应用服务器,它可以解析和处理Java Servlet和JSP。Tomcat可以用来运行我们的Web应用程序,并提供传输协议和端口以托管我们的应用。因此,考虑到我们的应用程序需要一个可靠的Web服务器来处理客户端请求,Tomcat框架会是一个很好的选择。 总结一下,结合Struts、Spring Boot、PostgreSQL、Redis和Tomcat这些框架,我们可以搭建出一套功能强大的Web应用程序,并且能够快速高效地进行开发和数据处理。希望我的回答对您有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值