| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package jnpf.config;
- import com.baomidou.lock.LockTemplate;
- import jnpf.consts.ProjectEventConst;
- import jnpf.event.*;
- import jnpf.handler.ProjectEventRedisMessageHandler;
- import jnpf.handler.ProjectEventRedisSender;
- import jnpf.event.ProjectEventSender;
- import jnpf.properties.EventProperty;
- import jnpf.util.PublishEventUtil;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.data.redis.core.RedisTemplate;
- import org.springframework.data.redis.listener.RedisMessageListenerContainer;
- @Configuration(proxyBeanMethods = false)
- public class ProjectEventAutoConfiguration {
- @Bean
- @ConfigurationProperties(prefix = EventProperty.PREFIX)
- public EventProperty getEventProperties(){
- return new EventProperty();
- }
- @Bean
- public ProjectEventListenerAnnotationBeanPostProcessor getProjectEventListenerAnnotationBeanPostProcessor(){
- return new ProjectEventListenerAnnotationBeanPostProcessor();
- }
- @Bean
- public ProjectEventProccess getProjectEventProccess(LockTemplate lockTemplate, ConfigValueUtil configValueUtil){
- return new ProjectEventProccess(lockTemplate, configValueUtil);
- }
- @Bean
- @ConditionalOnProperty(prefix = "event", name = "event-publish-type", havingValue = ProjectEventConst.EVENT_PUBLISH_TYPE_REDIS, matchIfMissing = true)
- public ProjectEventRedisMessageHandler getProjectEventRedisMessageHandler(RedisMessageListenerContainer container, EventProperty eventProperty){
- return new ProjectEventRedisMessageHandler(container, eventProperty);
- }
- /**
- * 自定义事件发布渠道为QUEUE
- */
- @Bean
- @ConditionalOnProperty(prefix = "event", name = "event-publish-type", havingValue = ProjectEventConst.EVENT_PUBLISH_TYPE_REDIS, matchIfMissing = true)
- public ProjectEventRedisSender getProjectEventRedisSender(RedisTemplate redisTemplate, EventProperty eventProperty){
- return new ProjectEventRedisSender(redisTemplate, eventProperty);
- }
- @Bean
- public PublishEventUtil getPublishEventUtil(@Autowired(required = false) ProjectEventSender eventSender){
- return new PublishEventUtil(eventSender);
- }
- }
|