1.优化
Showing
20 changed files
with
1580 additions
and
487 deletions
... | @@ -23,12 +23,12 @@ | ... | @@ -23,12 +23,12 @@ |
23 | 23 | ||
24 | <dependencies> | 24 | <dependencies> |
25 | 25 | ||
26 | <!--redisson--> | 26 | <!--wechat-util--> |
27 | <dependency> | 27 | <!--<dependency> |
28 | <groupId>org.redisson</groupId> | 28 | <groupId>com.topdraw</groupId> |
29 | <artifactId>redisson</artifactId> | 29 | <artifactId>wechat-util</artifactId> |
30 | <version>3.16.3</version> | 30 | <version>0.0.1-SNAPSHOT</version> |
31 | </dependency> | 31 | </dependency>--> |
32 | 32 | ||
33 | <!--代码生成器--> | 33 | <!--代码生成器--> |
34 | <dependency> | 34 | <dependency> | ... | ... |
1 | package com.topdraw.config; | ||
2 | |||
3 | import org.apache.commons.collections4.CollectionUtils; | ||
4 | import org.apache.commons.lang3.StringUtils; | ||
5 | import org.springframework.amqp.core.*; | ||
6 | import org.springframework.amqp.rabbit.core.RabbitAdmin; | ||
7 | import org.springframework.beans.factory.annotation.Autowired; | ||
8 | import org.springframework.stereotype.Component; | ||
9 | |||
10 | import javax.annotation.PostConstruct; | ||
11 | import javax.annotation.Resource; | ||
12 | import javax.naming.ConfigurationException; | ||
13 | import java.util.List; | ||
14 | import java.util.Map; | ||
15 | |||
16 | @Component | ||
17 | public class RabbitMqBindingConfig { | ||
18 | |||
19 | /**************************************************数据源选择*************************************************************/ | ||
20 | |||
21 | @Autowired | ||
22 | private RabbitMqSourceConfig rabbitMqSourceConfig; | ||
23 | @Autowired | ||
24 | private RabbitMqCustomConfig rabbitMqCustomConfig; | ||
25 | |||
26 | @Resource(name = "managementRabbitAdmin") | ||
27 | private RabbitAdmin managementRabbitAdmin; | ||
28 | |||
29 | @Resource(name = "serviceRabbitAdmin") | ||
30 | private RabbitAdmin serviceRabbitAdmin; | ||
31 | |||
32 | |||
33 | @PostConstruct | ||
34 | public void initBinding() throws ConfigurationException { | ||
35 | |||
36 | // String source = rabbitMqSourceConfig.getActiveSource(); | ||
37 | |||
38 | List<Map<String, String>> list = rabbitMqCustomConfig.getList(); | ||
39 | if (CollectionUtils.isNotEmpty(list)) { | ||
40 | |||
41 | for (Map<String, String> map : list) { | ||
42 | |||
43 | String exchange = map.get("exchange"); | ||
44 | String exchangeType = map.get("exchange-type"); | ||
45 | Exchange exchange_ = null; | ||
46 | switch (exchangeType) { | ||
47 | case ExchangeTypes.TOPIC: | ||
48 | exchange_ = ExchangeBuilder.topicExchange(exchange) | ||
49 | .durable(true).build(); | ||
50 | break; | ||
51 | case ExchangeTypes.FANOUT: | ||
52 | exchange_ = ExchangeBuilder.fanoutExchange(exchange) | ||
53 | .durable(true).build(); | ||
54 | break; | ||
55 | case ExchangeTypes.HEADERS: | ||
56 | exchange_ = ExchangeBuilder.headersExchange(exchange) | ||
57 | .durable(true).build(); | ||
58 | break; | ||
59 | |||
60 | default: | ||
61 | exchange_ = ExchangeBuilder.directExchange(exchange) | ||
62 | .durable(true).build(); | ||
63 | break; | ||
64 | } | ||
65 | |||
66 | String queue = map.get("queue"); | ||
67 | Queue queue_ = new Queue(queue); | ||
68 | |||
69 | String routingKey = map.get("routing-key"); | ||
70 | if (StringUtils.isBlank(routingKey)) { | ||
71 | routingKey = queue; | ||
72 | } | ||
73 | |||
74 | Binding binding_ = BindingBuilder.bind(queue_).to(exchange_).with(routingKey).and(null); | ||
75 | |||
76 | |||
77 | String active = map.get("active"); | ||
78 | switch (active) { | ||
79 | case "management": | ||
80 | this.managementRabbitAdmin.declareExchange(exchange_); | ||
81 | this.managementRabbitAdmin.declareQueue(queue_); | ||
82 | this.managementRabbitAdmin.declareBinding(binding_); | ||
83 | break; | ||
84 | case "service": | ||
85 | this.serviceRabbitAdmin.declareExchange(exchange_); | ||
86 | this.serviceRabbitAdmin.declareQueue(queue_); | ||
87 | this.serviceRabbitAdmin.declareBinding(binding_); | ||
88 | break; | ||
89 | /* case "service,management": | ||
90 | this.serviceRabbitAdmin.declareExchange(exchange_); | ||
91 | this.serviceRabbitAdmin.declareQueue(queue_); | ||
92 | this.serviceRabbitAdmin.declareBinding(binding_); | ||
93 | |||
94 | this.managementRabbitAdmin.declareExchange(exchange_); | ||
95 | this.managementRabbitAdmin.declareQueue(queue_); | ||
96 | this.managementRabbitAdmin.declareBinding(binding_); | ||
97 | break;*/ | ||
98 | default: | ||
99 | |||
100 | break; | ||
101 | } | ||
102 | |||
103 | } | ||
104 | |||
105 | } | ||
106 | |||
107 | } | ||
108 | |||
109 | } |
1 | package com.topdraw.config; | ||
2 | |||
3 | import org.springframework.amqp.core.*; | ||
4 | import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory; | ||
5 | import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; | ||
6 | import org.springframework.amqp.rabbit.connection.ConnectionFactory; | ||
7 | import org.springframework.amqp.rabbit.core.RabbitTemplate; | ||
8 | import org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory; | ||
9 | import org.springframework.beans.factory.annotation.Qualifier; | ||
10 | import org.springframework.beans.factory.annotation.Value; | ||
11 | import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer; | ||
12 | import org.springframework.context.annotation.Bean; | ||
13 | import org.springframework.context.annotation.Configuration; | ||
14 | import org.springframework.context.annotation.Primary; | ||
15 | |||
16 | @Configuration | ||
17 | public class RabbitMqConfig { | ||
18 | |||
19 | @Value("${mutil-mq.service.host}") | ||
20 | private String serviceHost; | ||
21 | @Value("${mutil-mq.service.port}") | ||
22 | private Integer servicePort; | ||
23 | @Value("${mutil-mq.service.username}") | ||
24 | private String serviceUserName; | ||
25 | @Value("${mutil-mq.service.password}") | ||
26 | private String servicePassword; | ||
27 | @Value("${mutil-mq.service.virtual-host}") | ||
28 | private String serviceVirtualHost; | ||
29 | |||
30 | @Bean(name = "serviceConnectionFactory") | ||
31 | @Primary | ||
32 | public ConnectionFactory serviceConnectionFactory(){ | ||
33 | CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); | ||
34 | connectionFactory.setHost(serviceHost); | ||
35 | connectionFactory.setPort(servicePort); | ||
36 | connectionFactory.setUsername(serviceUserName); | ||
37 | connectionFactory.setPassword(servicePassword); | ||
38 | connectionFactory.setVirtualHost(serviceVirtualHost); | ||
39 | return connectionFactory; | ||
40 | } | ||
41 | |||
42 | @Bean(name = "serviceRabbitListenerContainerFactory") | ||
43 | @Primary | ||
44 | public RabbitListenerContainerFactory userCenterRabbitListenerContainerFactory( | ||
45 | SimpleRabbitListenerContainerFactoryConfigurer containerFactoryConfigurer, | ||
46 | @Qualifier("serviceConnectionFactory") ConnectionFactory connectionFactory) { | ||
47 | System.out.println("userCenterRabbitListenerContainerFactory ====>> start "); | ||
48 | SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); | ||
49 | containerFactoryConfigurer.configure(factory,connectionFactory); | ||
50 | return factory; | ||
51 | } | ||
52 | |||
53 | @Bean(name = "serviceRabbitTemplate") | ||
54 | public RabbitTemplate userCenterRabbitTemplate(ConnectionFactory ucServiceConnectionFactory){ | ||
55 | RabbitTemplate u = new RabbitTemplate(ucServiceConnectionFactory); | ||
56 | return u; | ||
57 | } | ||
58 | |||
59 | |||
60 | @Value("${mutil-mq.management.host}") | ||
61 | private String managementHost; | ||
62 | @Value("${mutil-mq.management.port}") | ||
63 | private Integer managementPort; | ||
64 | @Value("${mutil-mq.management.username}") | ||
65 | private String managementUserName; | ||
66 | @Value("${mutil-mq.management.password}") | ||
67 | private String managementPassword; | ||
68 | @Value("${mutil-mq.management.virtual-host}") | ||
69 | private String managementVirtualHost; | ||
70 | |||
71 | @Bean(name = "managementConnectionFactory") | ||
72 | public ConnectionFactory managementConnectionFactory(){ | ||
73 | CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); | ||
74 | connectionFactory.setHost(managementHost); | ||
75 | connectionFactory.setPort(managementPort); | ||
76 | connectionFactory.setUsername(managementUserName); | ||
77 | connectionFactory.setPassword(managementPassword); | ||
78 | connectionFactory.setVirtualHost(managementVirtualHost); | ||
79 | return connectionFactory; | ||
80 | } | ||
81 | |||
82 | @Bean(name = "managementRabbitListenerContainerFactory") | ||
83 | public RabbitListenerContainerFactory memberServiceRabbitListenerContainerFactory( | ||
84 | SimpleRabbitListenerContainerFactoryConfigurer containerFactoryConfigurer, | ||
85 | @Qualifier("managementConnectionFactory") ConnectionFactory connectionFactory) { | ||
86 | System.out.println("memberServiceRabbitListenerContainerFactory ====>> start "); | ||
87 | SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); | ||
88 | containerFactoryConfigurer.configure(factory,connectionFactory); | ||
89 | return factory; | ||
90 | } | ||
91 | |||
92 | @Bean(name = "managementRabbitTemplate") | ||
93 | public RabbitTemplate memberServiceRabbitTemplate(ConnectionFactory ucGatewayConnectionFactory){ | ||
94 | RabbitTemplate u = new RabbitTemplate(ucGatewayConnectionFactory); | ||
95 | return u; | ||
96 | } | ||
97 | |||
98 | /**************************************************uc-getaway-samll 2 uc-consumer-samll*************************************************************/ | ||
99 | |||
100 | /*public static final String GATEWAY_TO_SMALL_DIRECT = "uc.gateway.small.direct"; | ||
101 | |||
102 | @Bean | ||
103 | public Queue eventSmallDirect() { | ||
104 | return new Queue(GATEWAY_TO_SMALL_DIRECT); | ||
105 | } | ||
106 | |||
107 | @Bean | ||
108 | Binding eventSmallBinding(DirectExchange managementExchange , Queue eventSmallDirect) { | ||
109 | BindingBuilder.DirectExchangeRoutingKeyConfigurer directExchangeRoutingKeyConfigurer = | ||
110 | BindingBuilder.bind(eventSmallDirect).to(managementExchange); | ||
111 | return directExchangeRoutingKeyConfigurer.with(GATEWAY_TO_SMALL_DIRECT); | ||
112 | }*/ | ||
113 | |||
114 | |||
115 | /**************************************************uc-engine-management 2 uc-consumer-iptv*************************************************************/ | ||
116 | |||
117 | |||
118 | /**************************************************uc-getaway-iptv 2 uc-consumer-iptv*************************************************************/ | ||
119 | |||
120 | public static final String GATEWAY_TO_SERVICE_DIRECT = "uc.gateway.service.direct"; | ||
121 | |||
122 | @Bean | ||
123 | public Queue eventServiceDirect() { | ||
124 | return new Queue(GATEWAY_TO_SERVICE_DIRECT); | ||
125 | } | ||
126 | |||
127 | @Bean | ||
128 | Binding eventBinding(DirectExchange serviceExchange, Queue eventServiceDirect) { | ||
129 | BindingBuilder.DirectExchangeRoutingKeyConfigurer directExchangeRoutingKeyConfigurer = | ||
130 | BindingBuilder.bind(eventServiceDirect).to(serviceExchange); | ||
131 | return directExchangeRoutingKeyConfigurer.with(ENGINE_TO_SERVICE_DIRECT); | ||
132 | } | ||
133 | |||
134 | |||
135 | /**************************************************uc-engine-management 2 uc-consumer-iptv*************************************************************/ | ||
136 | |||
137 | public static final String UC_DIRECT_MANAGEMENT = "uc.direct.management"; | ||
138 | // uc-service-management 2 uc-consumer-iptv | ||
139 | // public static final String ENGINE_TO_SERVICE_DIRECT = "uc.engine.service.direct"; | ||
140 | public static final String ENGINE_TO_SERVICE_DIRECT = "uc.engine.service.direct"; | ||
141 | |||
142 | @Bean | ||
143 | public Queue managementDirect() { | ||
144 | return new Queue(ENGINE_TO_SERVICE_DIRECT); | ||
145 | } | ||
146 | |||
147 | @Bean | ||
148 | DirectExchange managementExchange(){ | ||
149 | return ExchangeBuilder.directExchange(UC_DIRECT_MANAGEMENT).build(); | ||
150 | } | ||
151 | |||
152 | @Bean | ||
153 | Binding managementBinding(DirectExchange managementExchange , Queue managementDirect) { | ||
154 | BindingBuilder.DirectExchangeRoutingKeyConfigurer directExchangeRoutingKeyConfigurer = | ||
155 | BindingBuilder.bind(managementDirect).to(managementExchange); | ||
156 | return directExchangeRoutingKeyConfigurer.with(ENGINE_TO_SERVICE_DIRECT); | ||
157 | } | ||
158 | |||
159 | |||
160 | /**************************************************uc-engine-iptv 2 uc-consumer-management*************************************************************/ | ||
161 | |||
162 | public static final String UC_DIRECT_SERVICE = "uc.direct"; | ||
163 | // uc-service-iptv 2 uc-consumer-management | ||
164 | public static final String ENGINE_TO_MANAGEMENT_DIRECT = "uc.engine.management.direct"; | ||
165 | |||
166 | @Bean | ||
167 | public Queue serviceDirect() { | ||
168 | return new Queue(ENGINE_TO_MANAGEMENT_DIRECT); | ||
169 | } | ||
170 | |||
171 | @Bean | ||
172 | DirectExchange serviceExchange(){ | ||
173 | return ExchangeBuilder.directExchange(UC_DIRECT_SERVICE).build(); | ||
174 | } | ||
175 | |||
176 | @Bean | ||
177 | Binding serviceBinding(DirectExchange serviceExchange , Queue serviceDirect) { | ||
178 | BindingBuilder.DirectExchangeRoutingKeyConfigurer directExchangeRoutingKeyConfigurer = | ||
179 | BindingBuilder.bind(serviceDirect).to(serviceExchange); | ||
180 | return directExchangeRoutingKeyConfigurer.with(ENGINE_TO_MANAGEMENT_DIRECT); | ||
181 | } | ||
182 | |||
183 | |||
184 | |||
185 | /**************************************************数据基座*************************************************************/ | ||
186 | public static final String UC_EVENTBUS_EXCHANGE = "uc.eventbus"; | ||
187 | public static final String UC_EVENTBUS_KEY = "uc.eventbus.*.topic"; | ||
188 | public static final String UC_EVENTBUS_QUEUE = "uc.eventbus"; | ||
189 | |||
190 | @Bean | ||
191 | public Queue eventBusQueue() { | ||
192 | return new Queue(UC_EVENTBUS_QUEUE); | ||
193 | } | ||
194 | |||
195 | @Bean | ||
196 | TopicExchange eventBusExchange() { | ||
197 | return ExchangeBuilder.topicExchange(UC_EVENTBUS_EXCHANGE) | ||
198 | .durable(true).build(); | ||
199 | } | ||
200 | |||
201 | @Bean | ||
202 | Binding eventBusBinding(TopicExchange eventBusExchange, Queue eventBusQueue) { | ||
203 | return BindingBuilder | ||
204 | .bind(eventBusQueue) | ||
205 | .to(eventBusExchange) | ||
206 | .with(UC_EVENTBUS_KEY); | ||
207 | } | ||
208 | |||
209 | |||
210 | /**************************************************跨屏数据*************************************************************/ | ||
211 | /** 删除全部收藏队列(大屏->小屏) */ | ||
212 | public static final String COLLECTION_DELETE_ALL_QUEUE = "queue.collection.deleteall"; | ||
213 | |||
214 | /** 添加收藏队列(大屏->小屏) */ | ||
215 | public static final String COLLECTION_ADD_QUEUE = "queue.collection.add"; | ||
216 | |||
217 | /** 删除收藏队列(大屏->小屏) */ | ||
218 | public static final String COLLECTION_DELETE_QUEUE = "queue.collection.delete"; | ||
219 | |||
220 | /** 微信侧 公众号关注与取消关注 */ | ||
221 | public static final String WEIXIN_SUBORUNSUB_QUEUE = "weixin.subOrUnSub.queue"; | ||
222 | } |
1 | package com.topdraw.config; | ||
2 | |||
3 | import lombok.Data; | ||
4 | import org.apache.commons.collections4.CollectionUtils; | ||
5 | import org.springframework.boot.context.properties.ConfigurationProperties; | ||
6 | import org.springframework.context.annotation.Configuration; | ||
7 | |||
8 | import java.util.List; | ||
9 | import java.util.Map; | ||
10 | |||
11 | @Data | ||
12 | @Configuration | ||
13 | @ConfigurationProperties(prefix = "service.mq") | ||
14 | public class RabbitMqCustomConfig { | ||
15 | |||
16 | private List<Map<String, String>> list; | ||
17 | |||
18 | /** | ||
19 | * viewRecord | ||
20 | * @return | ||
21 | */ | ||
22 | public Map<String, String> getViewRecordInfo() { | ||
23 | |||
24 | if (CollectionUtils.isNotEmpty(list)) { | ||
25 | |||
26 | for (Map<String, String> map : list) { | ||
27 | String type = map.get("source"); | ||
28 | if (type.equalsIgnoreCase("viewRecord")) { | ||
29 | return map; | ||
30 | } | ||
31 | } | ||
32 | |||
33 | } | ||
34 | |||
35 | return null; | ||
36 | } | ||
37 | |||
38 | /** | ||
39 | * ucg_event | ||
40 | * @return | ||
41 | */ | ||
42 | public Map<String, String> getUcgEventInfo() { | ||
43 | |||
44 | if (CollectionUtils.isNotEmpty(list)) { | ||
45 | |||
46 | for (Map<String, String> map : list) { | ||
47 | String type = map.get("source"); | ||
48 | if (type.equalsIgnoreCase("event")) { | ||
49 | return map; | ||
50 | } | ||
51 | } | ||
52 | |||
53 | } | ||
54 | |||
55 | return null; | ||
56 | } | ||
57 | |||
58 | /** | ||
59 | * ucg_collection | ||
60 | * @return | ||
61 | */ | ||
62 | public Map<String, String> getUcgCollectionInfo() { | ||
63 | |||
64 | if (CollectionUtils.isNotEmpty(list)) { | ||
65 | |||
66 | for (Map<String, String> map : list) { | ||
67 | String type = map.get("source"); | ||
68 | if (type.equalsIgnoreCase("collection")) { | ||
69 | return map; | ||
70 | } | ||
71 | } | ||
72 | |||
73 | } | ||
74 | |||
75 | return null; | ||
76 | } | ||
77 | |||
78 | /** | ||
79 | * uce | ||
80 | * @return | ||
81 | */ | ||
82 | public Map<String, String> getUceInfo() { | ||
83 | |||
84 | if (CollectionUtils.isNotEmpty(list)) { | ||
85 | |||
86 | for (Map<String, String> map : list) { | ||
87 | String type = map.get("source"); | ||
88 | if (type.equalsIgnoreCase("uce")) { | ||
89 | return map; | ||
90 | } | ||
91 | } | ||
92 | |||
93 | } | ||
94 | |||
95 | return null; | ||
96 | } | ||
97 | |||
98 | /** | ||
99 | * eventBus | ||
100 | * @return | ||
101 | */ | ||
102 | public Map<String, String> getEventBusInfo() { | ||
103 | |||
104 | if (CollectionUtils.isNotEmpty(list)) { | ||
105 | |||
106 | for (Map<String, String> map : list) { | ||
107 | String type = map.get("source"); | ||
108 | if (type.equalsIgnoreCase("eventBus")) { | ||
109 | return map; | ||
110 | } | ||
111 | } | ||
112 | |||
113 | } | ||
114 | |||
115 | return null; | ||
116 | } | ||
117 | |||
118 | /** | ||
119 | |||
120 | * @return | ||
121 | */ | ||
122 | public Map<String, String> getWechatInfo() { | ||
123 | |||
124 | if (CollectionUtils.isNotEmpty(list)) { | ||
125 | |||
126 | for (Map<String, String> map : list) { | ||
127 | String type = map.get("source"); | ||
128 | if (type.equalsIgnoreCase("wechat")) { | ||
129 | return map; | ||
130 | } | ||
131 | } | ||
132 | |||
133 | } | ||
134 | |||
135 | return null; | ||
136 | } | ||
137 | } |
1 | package com.topdraw.config; | ||
2 | |||
3 | import lombok.Data; | ||
4 | import org.apache.commons.collections4.CollectionUtils; | ||
5 | import org.springframework.boot.context.properties.ConfigurationProperties; | ||
6 | import org.springframework.context.annotation.Configuration; | ||
7 | |||
8 | import java.util.List; | ||
9 | import java.util.Map; | ||
10 | |||
11 | /** | ||
12 | * @author : | ||
13 | * @description: | ||
14 | * @function : | ||
15 | * @date :Created in 2022/5/12 12:37 | ||
16 | * @version: : | ||
17 | * @modified By: | ||
18 | * @since : modified in 2022/5/12 12:37 | ||
19 | */ | ||
20 | @Data | ||
21 | @Configuration | ||
22 | @ConfigurationProperties(prefix = "service.mq.error.logs") | ||
23 | public class RabbitMqErrorLogConfig { | ||
24 | |||
25 | private List<Map<String, String>> list; | ||
26 | |||
27 | /** | ||
28 | * uce | ||
29 | * @return | ||
30 | */ | ||
31 | public Map<String, String> getWechatError() { | ||
32 | |||
33 | if (CollectionUtils.isNotEmpty(list)) { | ||
34 | |||
35 | for (Map<String, String> map : list) { | ||
36 | String type = map.get("type"); | ||
37 | if (type.equalsIgnoreCase("wechat")) { | ||
38 | return map; | ||
39 | } | ||
40 | } | ||
41 | |||
42 | } | ||
43 | |||
44 | return null; | ||
45 | } | ||
46 | |||
47 | /** | ||
48 | * uce | ||
49 | * @return | ||
50 | */ | ||
51 | public Map<String, String> getUceError() { | ||
52 | |||
53 | if (CollectionUtils.isNotEmpty(list)) { | ||
54 | |||
55 | for (Map<String, String> map : list) { | ||
56 | String type = map.get("type"); | ||
57 | if (type.equalsIgnoreCase("uce")) { | ||
58 | return map; | ||
59 | } | ||
60 | } | ||
61 | |||
62 | } | ||
63 | |||
64 | return null; | ||
65 | } | ||
66 | |||
67 | /** | ||
68 | * ucg | ||
69 | * @return | ||
70 | */ | ||
71 | public Map<String, String> getUcgError() { | ||
72 | |||
73 | if (CollectionUtils.isNotEmpty(list)) { | ||
74 | |||
75 | for (Map<String, String> map : list) { | ||
76 | String type = map.get("type"); | ||
77 | if (type.equalsIgnoreCase("ucg")) { | ||
78 | return map; | ||
79 | } | ||
80 | } | ||
81 | |||
82 | } | ||
83 | |||
84 | return null; | ||
85 | } | ||
86 | |||
87 | /** | ||
88 | * 数据总线 | ||
89 | * @return | ||
90 | */ | ||
91 | public Map<String, String> getEventBusError() { | ||
92 | |||
93 | if (CollectionUtils.isNotEmpty(list)) { | ||
94 | |||
95 | for (Map<String, String> map : list) { | ||
96 | String type = map.get("type"); | ||
97 | if (type.equalsIgnoreCase("eventBus")) { | ||
98 | return map; | ||
99 | } | ||
100 | } | ||
101 | |||
102 | } | ||
103 | |||
104 | return null; | ||
105 | } | ||
106 | |||
107 | /** | ||
108 | * 个人信息完善 | ||
109 | * @return | ||
110 | */ | ||
111 | public Map<String, String> getCompleteInfoError() { | ||
112 | |||
113 | if (CollectionUtils.isNotEmpty(list)) { | ||
114 | |||
115 | for (Map<String, String> map : list) { | ||
116 | String type = map.get("type"); | ||
117 | if (type.equalsIgnoreCase("completeInfo")) { | ||
118 | return map; | ||
119 | } | ||
120 | } | ||
121 | |||
122 | } | ||
123 | |||
124 | return null; | ||
125 | } | ||
126 | |||
127 | /** | ||
128 | * 订购 | ||
129 | * @return | ||
130 | */ | ||
131 | public Map<String, String> getOrderError() { | ||
132 | |||
133 | if (CollectionUtils.isNotEmpty(list)) { | ||
134 | |||
135 | for (Map<String, String> map : list) { | ||
136 | String type = map.get("type"); | ||
137 | if (type.equalsIgnoreCase("order")) { | ||
138 | return map; | ||
139 | } | ||
140 | } | ||
141 | |||
142 | } | ||
143 | |||
144 | return null; | ||
145 | } | ||
146 | |||
147 | /** | ||
148 | * 参加活动 | ||
149 | * @return | ||
150 | */ | ||
151 | public Map<String, String> getActivityError() { | ||
152 | |||
153 | if (CollectionUtils.isNotEmpty(list)) { | ||
154 | |||
155 | for (Map<String, String> map : list) { | ||
156 | String type = map.get("type"); | ||
157 | if (type.equalsIgnoreCase("activity")) { | ||
158 | return map; | ||
159 | } | ||
160 | } | ||
161 | |||
162 | } | ||
163 | |||
164 | return null; | ||
165 | } | ||
166 | |||
167 | /** | ||
168 | * 签到 | ||
169 | * @return | ||
170 | */ | ||
171 | public Map<String, String> getSignError() { | ||
172 | |||
173 | if (CollectionUtils.isNotEmpty(list)) { | ||
174 | |||
175 | for (Map<String, String> map : list) { | ||
176 | String type = map.get("type"); | ||
177 | if (type.equalsIgnoreCase("sign")) { | ||
178 | return map; | ||
179 | } | ||
180 | } | ||
181 | |||
182 | } | ||
183 | |||
184 | return null; | ||
185 | } | ||
186 | |||
187 | /** | ||
188 | * 观影、播放记录 | ||
189 | * @return | ||
190 | */ | ||
191 | public Map<String, String> getPlayError() { | ||
192 | |||
193 | if (CollectionUtils.isNotEmpty(list)) { | ||
194 | |||
195 | for (Map<String, String> map : list) { | ||
196 | String type = map.get("type"); | ||
197 | if (type.equalsIgnoreCase("play")) { | ||
198 | return map; | ||
199 | } | ||
200 | } | ||
201 | |||
202 | } | ||
203 | |||
204 | return null; | ||
205 | } | ||
206 | |||
207 | |||
208 | } |
1 | package com.topdraw.config; | ||
2 | |||
3 | import lombok.Data; | ||
4 | import org.apache.commons.collections4.MapUtils; | ||
5 | import org.apache.commons.lang3.StringUtils; | ||
6 | import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory; | ||
7 | import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; | ||
8 | import org.springframework.amqp.rabbit.connection.ConnectionFactory; | ||
9 | import org.springframework.amqp.rabbit.core.RabbitAdmin; | ||
10 | import org.springframework.amqp.rabbit.core.RabbitTemplate; | ||
11 | import org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory; | ||
12 | import org.springframework.beans.factory.annotation.Qualifier; | ||
13 | import org.springframework.beans.factory.annotation.Value; | ||
14 | import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer; | ||
15 | import org.springframework.context.annotation.Bean; | ||
16 | import org.springframework.context.annotation.Configuration; | ||
17 | import org.springframework.context.annotation.Primary; | ||
18 | |||
19 | import javax.naming.ConfigurationException; | ||
20 | import java.util.Map; | ||
21 | |||
22 | @Data | ||
23 | @Configuration | ||
24 | public class RabbitMqSourceConfig { | ||
25 | |||
26 | @Value("${mutil-mq.service.host}") | ||
27 | private String serviceHost; | ||
28 | @Value("${mutil-mq.service.port}") | ||
29 | private Integer servicePort; | ||
30 | @Value("${mutil-mq.service.username}") | ||
31 | private String serviceUserName; | ||
32 | @Value("${mutil-mq.service.password}") | ||
33 | private String servicePassword; | ||
34 | @Value("${mutil-mq.service.virtual-host}") | ||
35 | private String serviceVirtualHost; | ||
36 | |||
37 | public static final String SERVICE_ = "serviceRabbitListenerContainerFactory"; | ||
38 | |||
39 | @Bean(name = "serviceConnectionFactory") | ||
40 | @Primary | ||
41 | public ConnectionFactory serviceConnectionFactory(){ | ||
42 | CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); | ||
43 | connectionFactory.setHost(serviceHost); | ||
44 | connectionFactory.setPort(servicePort); | ||
45 | connectionFactory.setUsername(serviceUserName); | ||
46 | connectionFactory.setPassword(servicePassword); | ||
47 | connectionFactory.setVirtualHost(serviceVirtualHost); | ||
48 | return connectionFactory; | ||
49 | } | ||
50 | |||
51 | @Bean(name = SERVICE_) | ||
52 | @Primary | ||
53 | public RabbitListenerContainerFactory serviceRabbitListenerContainerFactory( | ||
54 | SimpleRabbitListenerContainerFactoryConfigurer containerFactoryConfigurer, | ||
55 | @Qualifier("serviceConnectionFactory") ConnectionFactory connectionFactory) { | ||
56 | SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); | ||
57 | containerFactoryConfigurer.configure(factory, connectionFactory); | ||
58 | return factory; | ||
59 | } | ||
60 | |||
61 | @Bean(name = "serviceRabbitTemplate") | ||
62 | public RabbitTemplate serviceRabbitTemplate(ConnectionFactory serviceConnectionFactory){ | ||
63 | RabbitTemplate rabbitTemplate = new RabbitTemplate(serviceConnectionFactory); | ||
64 | return rabbitTemplate; | ||
65 | } | ||
66 | |||
67 | @Bean(name = "serviceRabbitAdmin") | ||
68 | public RabbitAdmin serviceRabbitAdmin( | ||
69 | @Qualifier("serviceConnectionFactory") ConnectionFactory connectionFactory) { | ||
70 | RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory); | ||
71 | rabbitAdmin.setAutoStartup(true); | ||
72 | return rabbitAdmin; | ||
73 | } | ||
74 | |||
75 | |||
76 | public static final String MANAGEMENT_ = "managementRabbitListenerContainerFactory"; | ||
77 | |||
78 | @Value("${mutil-mq.management.host}") | ||
79 | private String managementHost; | ||
80 | @Value("${mutil-mq.management.port}") | ||
81 | private Integer managementPort; | ||
82 | @Value("${mutil-mq.management.username}") | ||
83 | private String managementUserName; | ||
84 | @Value("${mutil-mq.management.password}") | ||
85 | private String managementPassword; | ||
86 | @Value("${mutil-mq.management.virtual-host}") | ||
87 | private String managementVirtualHost; | ||
88 | |||
89 | @Bean(name = "managementConnectionFactory") | ||
90 | public ConnectionFactory managementConnectionFactory(){ | ||
91 | CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); | ||
92 | connectionFactory.setHost(managementHost); | ||
93 | connectionFactory.setPort(managementPort); | ||
94 | connectionFactory.setUsername(managementUserName); | ||
95 | connectionFactory.setPassword(managementPassword); | ||
96 | connectionFactory.setVirtualHost(managementVirtualHost); | ||
97 | return connectionFactory; | ||
98 | } | ||
99 | |||
100 | @Bean(name = MANAGEMENT_) | ||
101 | public RabbitListenerContainerFactory managementRabbitListenerContainerFactory( | ||
102 | SimpleRabbitListenerContainerFactoryConfigurer containerFactoryConfigurer, | ||
103 | @Qualifier("managementConnectionFactory") ConnectionFactory connectionFactory) { | ||
104 | SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); | ||
105 | containerFactoryConfigurer.configure(factory, connectionFactory); | ||
106 | return factory; | ||
107 | } | ||
108 | |||
109 | @Bean(name = "managementRabbitTemplate") | ||
110 | public RabbitTemplate managementRabbitTemplate(ConnectionFactory managementConnectionFactory){ | ||
111 | RabbitTemplate rabbitTemplate = new RabbitTemplate(managementConnectionFactory); | ||
112 | return rabbitTemplate; | ||
113 | } | ||
114 | |||
115 | @Bean(name = "managementRabbitAdmin") | ||
116 | public RabbitAdmin managementRabbitAdmin( | ||
117 | @Qualifier("managementConnectionFactory") ConnectionFactory connectionFactory) { | ||
118 | RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory); | ||
119 | rabbitAdmin.setAutoStartup(true); | ||
120 | return rabbitAdmin; | ||
121 | } | ||
122 | |||
123 | |||
124 | /**************************************************数据源*************************************************************/ | ||
125 | |||
126 | |||
127 | /*@Value("${service.platform}") | ||
128 | private String platform; | ||
129 | @Value("${service.active}") | ||
130 | private String active; | ||
131 | |||
132 | public String getActiveSource() throws ConfigurationException { | ||
133 | |||
134 | if (StringUtils.isBlank(platform)) | ||
135 | throw new ConfigurationException("【error】=> platform is none !! "); | ||
136 | |||
137 | if (StringUtils.isBlank(active)) | ||
138 | throw new ConfigurationException("【error】=> active is none !! "); | ||
139 | |||
140 | if (active.equalsIgnoreCase("service,management") || active.equalsIgnoreCase("management,service")) { | ||
141 | return "service,management"; | ||
142 | } | ||
143 | |||
144 | return active; | ||
145 | }*/ | ||
146 | |||
147 | private String chargeSource(String active) { | ||
148 | |||
149 | if (active.equalsIgnoreCase("management")) { | ||
150 | return MANAGEMENT_; | ||
151 | } | ||
152 | |||
153 | if (active.equalsIgnoreCase("service")) { | ||
154 | return SERVICE_; | ||
155 | } | ||
156 | |||
157 | return null; | ||
158 | } | ||
159 | |||
160 | /**************************************************uc-getaway 2 uc-consumer*************************************************************/ | ||
161 | |||
162 | public static final String EVENT_EXCHANGE = "event.exchange"; | ||
163 | public static final String EVENT_QUEUE = "event.queue"; | ||
164 | |||
165 | @Value("#{rabbitMqCustomConfig.getUcgEventInfo()}") | ||
166 | private Map<String, String> ucgEventInfo; | ||
167 | |||
168 | public String getUcgEventQueue(){ | ||
169 | if (MapUtils.isNotEmpty(ucgEventInfo)) { | ||
170 | String queue = ucgEventInfo.get("queue"); | ||
171 | return queue; | ||
172 | } | ||
173 | |||
174 | return EVENT_QUEUE; | ||
175 | } | ||
176 | |||
177 | public String getUcgEventSource(){ | ||
178 | if (MapUtils.isNotEmpty(ucgEventInfo)) { | ||
179 | String source = ucgEventInfo.get("active"); | ||
180 | if (StringUtils.isNotBlank(source)) { | ||
181 | return this.chargeSource(source); | ||
182 | } else { | ||
183 | return ""; | ||
184 | } | ||
185 | } | ||
186 | |||
187 | return null; | ||
188 | } | ||
189 | |||
190 | public String getUcgEventStartUp(){ | ||
191 | if (MapUtils.isNotEmpty(ucgEventInfo)) { | ||
192 | String source = ucgEventInfo.get("active"); | ||
193 | if (StringUtils.isNotBlank(source)) { | ||
194 | return "true"; | ||
195 | } | ||
196 | } | ||
197 | |||
198 | return "false"; | ||
199 | } | ||
200 | |||
201 | /* public static final String COLLECTION_DELETE_ALL_QUEUE = "queue.collection.deleteall"; | ||
202 | public static final String COLLECTION_ADD_QUEUE = "queue.collection.add"; | ||
203 | public static final String COLLECTION_DELETE_QUEUE = "queue.collection.delete";*/ | ||
204 | |||
205 | public static final String COLLECTION_EXCHANGE = "collection.exchange"; | ||
206 | public static final String COLLECTION_QUEUE = "collection.queue"; | ||
207 | |||
208 | @Value("#{rabbitMqCustomConfig.getUcgCollectionInfo()}") | ||
209 | private Map<String, String> ucgIptvCollectionInfo; | ||
210 | |||
211 | public String getUcgCollectionQueue(){ | ||
212 | if (MapUtils.isNotEmpty(ucgIptvCollectionInfo)) { | ||
213 | String queue = ucgIptvCollectionInfo.get("queue"); | ||
214 | return queue; | ||
215 | } | ||
216 | |||
217 | return COLLECTION_QUEUE; | ||
218 | } | ||
219 | |||
220 | public String getUcgCollectionSource(){ | ||
221 | if (MapUtils.isNotEmpty(ucgIptvCollectionInfo)) { | ||
222 | String source = ucgIptvCollectionInfo.get("active"); | ||
223 | if (StringUtils.isNotBlank(source)) { | ||
224 | return this.chargeSource(source); | ||
225 | } else { | ||
226 | return ""; | ||
227 | } | ||
228 | } | ||
229 | |||
230 | return null; | ||
231 | } | ||
232 | |||
233 | public String getUcgCollectionStartUp(){ | ||
234 | if (MapUtils.isNotEmpty(ucgIptvCollectionInfo)) { | ||
235 | String source = ucgIptvCollectionInfo.get("active"); | ||
236 | if (StringUtils.isNotBlank(source)) { | ||
237 | return "true"; | ||
238 | } | ||
239 | } | ||
240 | |||
241 | return "false"; | ||
242 | } | ||
243 | |||
244 | public static final String VIEW_RECORD_EXCHANGE = "viewRecord.exchange"; | ||
245 | public static final String VIEW_RECORD_QUEUE = "viewRecord.queue"; | ||
246 | |||
247 | @Value("#{rabbitMqCustomConfig.getViewRecordInfo()}") | ||
248 | private Map<String, String> viewRecordInfo; | ||
249 | |||
250 | public String getViewRecordQueue(){ | ||
251 | if (MapUtils.isNotEmpty(viewRecordInfo)) { | ||
252 | String queue = viewRecordInfo.get("queue"); | ||
253 | return queue; | ||
254 | } | ||
255 | |||
256 | return VIEW_RECORD_QUEUE; | ||
257 | } | ||
258 | |||
259 | public String getViewRecordSource(){ | ||
260 | if (MapUtils.isNotEmpty(viewRecordInfo)) { | ||
261 | String source = viewRecordInfo.get("active"); | ||
262 | if (StringUtils.isNotBlank(source)) { | ||
263 | return this.chargeSource(source); | ||
264 | } else { | ||
265 | return ""; | ||
266 | } | ||
267 | } | ||
268 | |||
269 | return null; | ||
270 | } | ||
271 | |||
272 | public String getViewRecordStartUp(){ | ||
273 | if (MapUtils.isNotEmpty(viewRecordInfo)) { | ||
274 | String source = viewRecordInfo.get("active"); | ||
275 | if (StringUtils.isNotBlank(source)) { | ||
276 | return "true"; | ||
277 | } | ||
278 | } | ||
279 | |||
280 | return "false"; | ||
281 | } | ||
282 | |||
283 | /**************************************************uc-engine 2 uc-consumer*************************************************************/ | ||
284 | |||
285 | public static final String UCE_EXCHANGE = "uce.exchange"; | ||
286 | public static final String UCE_QUEUE = "uce.queue"; | ||
287 | |||
288 | @Value("#{rabbitMqCustomConfig.getUceInfo()}") | ||
289 | private Map<String, String> uceInfo; | ||
290 | |||
291 | public String getUceQueue(){ | ||
292 | if (MapUtils.isNotEmpty(uceInfo)) { | ||
293 | String queue = uceInfo.get("queue"); | ||
294 | return queue; | ||
295 | } | ||
296 | |||
297 | return UCE_QUEUE; | ||
298 | } | ||
299 | |||
300 | public String getUceSource(){ | ||
301 | if (MapUtils.isNotEmpty(uceInfo)) { | ||
302 | String source = uceInfo.get("active"); | ||
303 | if (StringUtils.isNotBlank(source)) { | ||
304 | return this.chargeSource(source); | ||
305 | } else { | ||
306 | return ""; | ||
307 | } | ||
308 | } | ||
309 | |||
310 | return null; | ||
311 | } | ||
312 | |||
313 | public String getUceStartUp(){ | ||
314 | if (MapUtils.isNotEmpty(uceInfo)) { | ||
315 | String source = uceInfo.get("active"); | ||
316 | if (StringUtils.isNotBlank(source)) { | ||
317 | return "true"; | ||
318 | } | ||
319 | } | ||
320 | |||
321 | return "false"; | ||
322 | } | ||
323 | |||
324 | /**************************************************eventBus*************************************************************/ | ||
325 | public static final String UC_EVENTBUS_EXCHANGE = "uc.eventbus"; | ||
326 | public static final String UC_EVENTBUS_KEY = "uc.eventbus.*.topic"; | ||
327 | public static final String UC_EVENTBUS_QUEUE = "uc.eventbus"; | ||
328 | |||
329 | @Value("#{rabbitMqCustomConfig.getEventBusInfo()}") | ||
330 | private Map<String, String> eventBusInfo; | ||
331 | |||
332 | public String getEventBusQueue(){ | ||
333 | if (MapUtils.isNotEmpty(eventBusInfo)) { | ||
334 | String queue = eventBusInfo.get("queue"); | ||
335 | return queue; | ||
336 | } | ||
337 | |||
338 | return UC_EVENTBUS_QUEUE; | ||
339 | } | ||
340 | |||
341 | public String getEventBusSource(){ | ||
342 | if (MapUtils.isNotEmpty(eventBusInfo)) { | ||
343 | String source = eventBusInfo.get("active"); | ||
344 | if (StringUtils.isNotBlank(source)) { | ||
345 | return this.chargeSource(source); | ||
346 | } else { | ||
347 | return ""; | ||
348 | } | ||
349 | } | ||
350 | |||
351 | return null; | ||
352 | } | ||
353 | |||
354 | public String getEventBusStartUp(){ | ||
355 | if (MapUtils.isNotEmpty(eventBusInfo)) { | ||
356 | String source = eventBusInfo.get("active"); | ||
357 | if (StringUtils.isNotBlank(source)) { | ||
358 | return "true"; | ||
359 | } | ||
360 | } | ||
361 | |||
362 | return "false"; | ||
363 | } | ||
364 | |||
365 | /**************************************************wechat*************************************************************/ | ||
366 | |||
367 | public static final String WEIXIN_EXCHANGE = "weixin.subOrUnSub.direct"; | ||
368 | public static final String WEIXIN_SUBORUNSUB_QUEUE = "weixin.subOrUnSub.queue"; | ||
369 | |||
370 | @Value("#{rabbitMqCustomConfig.getWechatInfo()}") | ||
371 | private Map<String, String> wechatInfo; | ||
372 | |||
373 | public String getWechatQueue(){ | ||
374 | if (MapUtils.isNotEmpty(wechatInfo)) { | ||
375 | String queue = wechatInfo.get("queue"); | ||
376 | return queue; | ||
377 | } | ||
378 | |||
379 | return WEIXIN_SUBORUNSUB_QUEUE; | ||
380 | } | ||
381 | |||
382 | public String getWechatSource(){ | ||
383 | if (MapUtils.isNotEmpty(wechatInfo)) { | ||
384 | String source = wechatInfo.get("active"); | ||
385 | if (StringUtils.isNotBlank(source)) { | ||
386 | return this.chargeSource(source); | ||
387 | } else { | ||
388 | return ""; | ||
389 | } | ||
390 | } | ||
391 | |||
392 | return null; | ||
393 | } | ||
394 | |||
395 | public String getWechatStartUp(){ | ||
396 | if (MapUtils.isNotEmpty(wechatInfo)) { | ||
397 | String source = wechatInfo.get("active"); | ||
398 | if (StringUtils.isNotBlank(source)) { | ||
399 | return "true"; | ||
400 | } | ||
401 | } | ||
402 | |||
403 | return "false"; | ||
404 | } | ||
405 | } |
1 | package com.topdraw.mq.consumer; | 1 | package com.topdraw.mq.consumer; |
2 | 2 | ||
3 | import com.topdraw.config.RabbitMqConfig; | 3 | import com.rabbitmq.client.Channel; |
4 | import com.topdraw.mq.domain.DataSyncMsg; | ||
5 | import com.topdraw.mq.domain.TableOperationMsg; | 4 | import com.topdraw.mq.domain.TableOperationMsg; |
6 | import com.topdraw.resttemplate.RestTemplateClient; | 5 | import com.topdraw.resttemplate.RestTemplateClient; |
6 | import com.topdraw.util.FileUtil; | ||
7 | import com.topdraw.util.JSONUtil; | 7 | import com.topdraw.util.JSONUtil; |
8 | import lombok.extern.slf4j.Slf4j; | 8 | import lombok.extern.slf4j.Slf4j; |
9 | import org.slf4j.Logger; | 9 | import org.apache.commons.collections4.MapUtils; |
10 | import org.slf4j.LoggerFactory; | 10 | import org.springframework.amqp.core.Message; |
11 | import org.springframework.amqp.core.ExchangeTypes; | 11 | import org.springframework.amqp.rabbit.annotation.RabbitHandler; |
12 | import org.springframework.amqp.rabbit.annotation.*; | 12 | import org.springframework.amqp.rabbit.annotation.RabbitListener; |
13 | import org.springframework.beans.factory.annotation.Autowired; | 13 | import org.springframework.beans.factory.annotation.Autowired; |
14 | import org.springframework.beans.factory.annotation.Value; | ||
14 | import org.springframework.stereotype.Component; | 15 | import org.springframework.stereotype.Component; |
15 | import org.springframework.util.Assert; | 16 | import org.springframework.util.Assert; |
16 | 17 | ||
18 | import java.io.IOException; | ||
19 | import java.time.LocalDate; | ||
20 | import java.util.Map; | ||
21 | |||
17 | @Component | 22 | @Component |
18 | @Slf4j | 23 | @Slf4j |
19 | public class UcEngineIptv2ManagementConsumer { | 24 | public class UcEngineIptv2ManagementConsumer { |
... | @@ -24,6 +29,9 @@ public class UcEngineIptv2ManagementConsumer { | ... | @@ -24,6 +29,9 @@ public class UcEngineIptv2ManagementConsumer { |
24 | @Autowired | 29 | @Autowired |
25 | RestTemplateClient restTemplateClient; | 30 | RestTemplateClient restTemplateClient; |
26 | 31 | ||
32 | @Value("#{rabbitMqErrorLogConfig.getUceError()}") | ||
33 | private Map<String, String> error; | ||
34 | |||
27 | /** | 35 | /** |
28 | * 事件 | 36 | * 事件 |
29 | * @param content | 37 | * @param content |
... | @@ -32,14 +40,36 @@ public class UcEngineIptv2ManagementConsumer { | ... | @@ -32,14 +40,36 @@ public class UcEngineIptv2ManagementConsumer { |
32 | * @date 2021/9/7 11:26 上午 | 40 | * @date 2021/9/7 11:26 上午 |
33 | */ | 41 | */ |
34 | /*@RabbitHandler | 42 | /*@RabbitHandler |
35 | @RabbitListener(bindings = { | 43 | @RabbitListener(queues = "#{rabbitMqConfig.getUceQueue()}", |
36 | @QueueBinding(value = @Queue(value = RabbitMqConfig.ENGINE_TO_MANAGEMENT_DIRECT), | 44 | containerFactory = "serviceRabbitListenerContainerFactory", ackMode = "MANUAL")*/ |
37 | exchange = @Exchange(value = ExchangeTypes.DIRECT)) | 45 | public void ucEventConsumer(Channel channel, Message message, String content) throws IOException { |
38 | }, containerFactory = "serviceRabbitListenerContainerFactory")*/ | ||
39 | public void ucEventConsumer(String content) { | ||
40 | log.info(" receive dataSync msg , content is : {} ", content); | 46 | log.info(" receive dataSync msg , content is : {} ", content); |
47 | try { | ||
48 | |||
41 | TableOperationMsg tableOperationMsg = this.parseContent(content); | 49 | TableOperationMsg tableOperationMsg = this.parseContent(content); |
50 | |||
42 | autoUser.route(tableOperationMsg); | 51 | autoUser.route(tableOperationMsg); |
52 | |||
53 | channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); | ||
54 | |||
55 | } catch (Exception e) { | ||
56 | |||
57 | channel.basicReject(message.getMessageProperties().getDeliveryTag(), false); | ||
58 | |||
59 | if (MapUtils.isNotEmpty(error)) { | ||
60 | String errorStart = this.error.get("start"); | ||
61 | |||
62 | if (errorStart.equalsIgnoreCase("true")) { | ||
63 | String fileName = this.error.get("fileName")+"_"+ LocalDate.now() +".log"; | ||
64 | String filePath = this.error.get("filePath"); | ||
65 | String filePath1 = filePath+fileName; | ||
66 | FileUtil.writeStringToFile2(filePath1, content, e.getMessage()); | ||
67 | } | ||
68 | |||
69 | } | ||
70 | |||
71 | e.printStackTrace(); | ||
72 | } | ||
43 | log.info("ucEventConsumer ====>>>> end"); | 73 | log.info("ucEventConsumer ====>>>> end"); |
44 | } | 74 | } |
45 | 75 | ... | ... |
1 | package com.topdraw.mq.consumer; | 1 | package com.topdraw.mq.consumer; |
2 | 2 | ||
3 | import com.topdraw.config.RabbitMqConfig; | 3 | import com.rabbitmq.client.Channel; |
4 | import com.topdraw.mq.domain.TableOperationMsg; | 4 | import com.topdraw.mq.domain.TableOperationMsg; |
5 | import com.topdraw.resttemplate.RestTemplateClient; | 5 | import com.topdraw.resttemplate.RestTemplateClient; |
6 | import com.topdraw.util.FileUtil; | ||
6 | import com.topdraw.util.JSONUtil; | 7 | import com.topdraw.util.JSONUtil; |
7 | import lombok.extern.slf4j.Slf4j; | 8 | import lombok.extern.slf4j.Slf4j; |
8 | import org.springframework.amqp.core.ExchangeTypes; | 9 | import org.apache.commons.collections4.MapUtils; |
10 | import org.springframework.amqp.core.Message; | ||
9 | import org.springframework.amqp.rabbit.annotation.*; | 11 | import org.springframework.amqp.rabbit.annotation.*; |
10 | import org.springframework.beans.factory.annotation.Autowired; | 12 | import org.springframework.beans.factory.annotation.Autowired; |
13 | import org.springframework.beans.factory.annotation.Value; | ||
11 | import org.springframework.stereotype.Component; | 14 | import org.springframework.stereotype.Component; |
12 | import org.springframework.util.Assert; | 15 | import org.springframework.util.Assert; |
13 | 16 | ||
17 | import java.io.IOException; | ||
18 | import java.time.LocalDate; | ||
19 | import java.util.Map; | ||
20 | |||
14 | @Component | 21 | @Component |
15 | @Slf4j | 22 | @Slf4j |
16 | public class UcEngineManagement2IptvConsumer { | 23 | public class UcEngineManagement2IptvConsumer { |
... | @@ -21,6 +28,9 @@ public class UcEngineManagement2IptvConsumer { | ... | @@ -21,6 +28,9 @@ public class UcEngineManagement2IptvConsumer { |
21 | @Autowired | 28 | @Autowired |
22 | RestTemplateClient restTemplateClient; | 29 | RestTemplateClient restTemplateClient; |
23 | 30 | ||
31 | @Value("#{rabbitMqErrorLogConfig.getUceError()}") | ||
32 | private Map<String, String> error; | ||
33 | |||
24 | /** | 34 | /** |
25 | * 事件 | 35 | * 事件 |
26 | * @param content | 36 | * @param content |
... | @@ -29,14 +39,38 @@ public class UcEngineManagement2IptvConsumer { | ... | @@ -29,14 +39,38 @@ public class UcEngineManagement2IptvConsumer { |
29 | * @date 2021/9/7 11:26 上午 | 39 | * @date 2021/9/7 11:26 上午 |
30 | */ | 40 | */ |
31 | @RabbitHandler | 41 | @RabbitHandler |
32 | @RabbitListener(bindings = { | 42 | @RabbitListener(queues = "#{rabbitMqSourceConfig.getUceQueue()}", |
33 | @QueueBinding(value = @Queue(value = RabbitMqConfig.ENGINE_TO_SERVICE_DIRECT), | 43 | containerFactory = "#{rabbitMqSourceConfig.getUceSource()}", |
34 | exchange = @Exchange(value = ExchangeTypes.DIRECT)) | 44 | autoStartup = "#{rabbitMqSourceConfig.getUceStartUp()}", |
35 | }, containerFactory = "managementRabbitListenerContainerFactory") | 45 | ackMode = "MANUAL") |
36 | public void ucEventConsumer(String content) { | 46 | public void ucEventConsumer(Channel channel, Message message, String content) throws IOException { |
37 | log.info(" receive dataSync msg , content is : {} ", content); | 47 | log.info(" receive dataSync msg , content is : {} ", content); |
48 | |||
49 | try { | ||
38 | TableOperationMsg tableOperationMsg = this.parseContent(content); | 50 | TableOperationMsg tableOperationMsg = this.parseContent(content); |
51 | |||
39 | autoUser.route(tableOperationMsg); | 52 | autoUser.route(tableOperationMsg); |
53 | |||
54 | channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); | ||
55 | |||
56 | } catch (Exception e) { | ||
57 | |||
58 | channel.basicReject(message.getMessageProperties().getDeliveryTag(), false); | ||
59 | |||
60 | if (MapUtils.isNotEmpty(error)) { | ||
61 | String errorStart = this.error.get("start"); | ||
62 | |||
63 | if (errorStart.equalsIgnoreCase("true")) { | ||
64 | String fileName = this.error.get("fileName")+"_"+ LocalDate.now() +".log"; | ||
65 | String filePath = this.error.get("filePath"); | ||
66 | String filePath1 = filePath+fileName; | ||
67 | FileUtil.writeStringToFile2(filePath1, content, e.getMessage()); | ||
68 | } | ||
69 | |||
70 | } | ||
71 | |||
72 | e.printStackTrace(); | ||
73 | } | ||
40 | log.info("ucEventConsumer ====>>>> end"); | 74 | log.info("ucEventConsumer ====>>>> end"); |
41 | } | 75 | } |
42 | 76 | ... | ... |
... | @@ -2,33 +2,38 @@ package com.topdraw.mq.consumer; | ... | @@ -2,33 +2,38 @@ package com.topdraw.mq.consumer; |
2 | 2 | ||
3 | import com.alibaba.fastjson.JSON; | 3 | import com.alibaba.fastjson.JSON; |
4 | import com.alibaba.fastjson.JSONObject; | 4 | import com.alibaba.fastjson.JSONObject; |
5 | import com.rabbitmq.client.Channel; | ||
5 | import com.topdraw.business.module.member.service.MemberService; | 6 | import com.topdraw.business.module.member.service.MemberService; |
6 | import com.topdraw.business.module.member.service.dto.MemberDTO; | 7 | import com.topdraw.business.module.member.service.dto.MemberDTO; |
8 | import com.topdraw.business.module.task.attribute.service.TaskAttrService; | ||
9 | import com.topdraw.business.module.task.attribute.service.dto.TaskAttrDTO; | ||
10 | import com.topdraw.business.module.task.domain.Task; | ||
11 | import com.topdraw.business.module.task.service.TaskService; | ||
12 | import com.topdraw.business.module.task.template.service.TaskTemplateService; | ||
13 | import com.topdraw.business.module.task.template.service.dto.TaskTemplateDTO; | ||
7 | import com.topdraw.business.module.user.iptv.service.UserTvService; | 14 | import com.topdraw.business.module.user.iptv.service.UserTvService; |
8 | import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO; | 15 | import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO; |
9 | import com.topdraw.config.RabbitMqConfig; | ||
10 | import com.topdraw.exception.BadRequestException; | ||
11 | import com.topdraw.exception.EntityNotFoundException; | 16 | import com.topdraw.exception.EntityNotFoundException; |
12 | import com.topdraw.mq.domain.DataSyncMsg; | 17 | import com.topdraw.mq.domain.DataSyncMsg; |
13 | import com.topdraw.resttemplate.RestTemplateClient; | 18 | import com.topdraw.resttemplate.RestTemplateClient; |
14 | import com.topdraw.util.DateUtil; | 19 | import com.topdraw.util.DateUtil; |
20 | import com.topdraw.util.FileUtil; | ||
15 | import com.topdraw.util.JSONUtil; | 21 | import com.topdraw.util.JSONUtil; |
16 | import com.topdraw.util.TimestampUtil; | ||
17 | import com.topdraw.utils.RedisUtils; | 22 | import com.topdraw.utils.RedisUtils; |
18 | import lombok.Data; | 23 | import lombok.Data; |
19 | import lombok.extern.slf4j.Slf4j; | 24 | import lombok.extern.slf4j.Slf4j; |
25 | import org.apache.commons.collections4.CollectionUtils; | ||
20 | import org.apache.commons.collections4.MapUtils; | 26 | import org.apache.commons.collections4.MapUtils; |
21 | import org.apache.commons.lang3.StringUtils; | 27 | import org.apache.commons.lang3.StringUtils; |
22 | import org.apache.commons.lang3.time.DateFormatUtils; | 28 | import org.springframework.amqp.core.Message; |
23 | import org.apache.commons.lang3.time.DateUtils; | ||
24 | import org.springframework.amqp.rabbit.annotation.*; | 29 | import org.springframework.amqp.rabbit.annotation.*; |
25 | import org.springframework.beans.factory.annotation.Autowired; | 30 | import org.springframework.beans.factory.annotation.Autowired; |
31 | import org.springframework.beans.factory.annotation.Value; | ||
26 | import org.springframework.stereotype.Component; | 32 | import org.springframework.stereotype.Component; |
27 | 33 | ||
28 | import java.text.DateFormat; | 34 | import java.io.IOException; |
29 | import java.text.ParseException; | 35 | import java.text.ParseException; |
30 | import java.text.SimpleDateFormat; | 36 | import java.time.LocalDate; |
31 | import java.time.LocalDateTime; | ||
32 | import java.util.*; | 37 | import java.util.*; |
33 | 38 | ||
34 | @Component | 39 | @Component |
... | @@ -36,17 +41,23 @@ import java.util.*; | ... | @@ -36,17 +41,23 @@ import java.util.*; |
36 | public class UcEventBusIptv2ManagementUcEngine { | 41 | public class UcEventBusIptv2ManagementUcEngine { |
37 | 42 | ||
38 | @Autowired | 43 | @Autowired |
39 | private RestTemplateClient restTemplateClient; | 44 | private TaskService taskService; |
40 | @Autowired | 45 | @Autowired |
41 | private UserTvService userTvService; | 46 | private UserTvService userTvService; |
42 | @Autowired | 47 | @Autowired |
43 | private MemberService memberService; | 48 | private MemberService memberService; |
44 | 49 | @Autowired | |
50 | private TaskAttrService taskAttrService; | ||
51 | @Autowired | ||
52 | private TaskTemplateService taskTemplateService; | ||
53 | @Autowired | ||
54 | private RestTemplateClient restTemplateClient; | ||
45 | @Autowired | 55 | @Autowired |
46 | private RedisUtils redisUtils; | 56 | private RedisUtils redisUtils; |
47 | 57 | ||
48 | 58 | ||
49 | private static final Integer PLAY_30 = 30; | 59 | @Value("#{rabbitMqErrorLogConfig.getEventBusError()}") |
60 | private Map<String, String> error; | ||
50 | 61 | ||
51 | /** | 62 | /** |
52 | * 事件 | 63 | * 事件 |
... | @@ -56,13 +67,35 @@ public class UcEventBusIptv2ManagementUcEngine { | ... | @@ -56,13 +67,35 @@ public class UcEventBusIptv2ManagementUcEngine { |
56 | * @date 2021/9/7 11:26 上午 | 67 | * @date 2021/9/7 11:26 上午 |
57 | */ | 68 | */ |
58 | @RabbitHandler | 69 | @RabbitHandler |
59 | @RabbitListener(queues = RabbitMqConfig.UC_EVENTBUS_QUEUE, | 70 | @RabbitListener(queues = "#{rabbitMqSourceConfig.getEventBusQueue()}", |
60 | containerFactory = "serviceRabbitListenerContainerFactory") | 71 | containerFactory = "#{rabbitMqSourceConfig.getEventBusSource()}", |
61 | public void ucEventConsumer(String content) throws ParseException { | 72 | autoStartup = "#{rabbitMqSourceConfig.getEventBusStartUp()}", |
73 | ackMode = "MANUAL") | ||
74 | public void eventBusConsumer(Channel channel, Message message, String content) throws ParseException, IOException { | ||
62 | log.info(" receive dataSync msg , content is : {} ", content); | 75 | log.info(" receive dataSync msg , content is : {} ", content); |
63 | DataSyncMsg dataSyncMsg = this.parseContent(content); | 76 | try { |
64 | if (Objects.nonNull(dataSyncMsg)) { | 77 | |
65 | this.taskDeal(dataSyncMsg); | 78 | this.parseContent(content); |
79 | |||
80 | channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); | ||
81 | |||
82 | } catch (Exception e) { | ||
83 | |||
84 | channel.basicReject(message.getMessageProperties().getDeliveryTag(), false); | ||
85 | |||
86 | if (MapUtils.isNotEmpty(error)) { | ||
87 | String errorStart = this.error.get("start"); | ||
88 | |||
89 | if (errorStart.equalsIgnoreCase("true")) { | ||
90 | String fileName = this.error.get("fileName")+"_"+LocalDate.now() +".log"; | ||
91 | String filePath = this.error.get("filePath"); | ||
92 | String filePath1 = filePath+fileName; | ||
93 | FileUtil.writeStringToFile2(filePath1, content, e.getMessage()); | ||
94 | } | ||
95 | |||
96 | } | ||
97 | |||
98 | e.printStackTrace(); | ||
66 | } | 99 | } |
67 | log.info("ucEventConsumer ====>>>> end"); | 100 | log.info("ucEventConsumer ====>>>> end"); |
68 | } | 101 | } |
... | @@ -73,7 +106,7 @@ public class UcEventBusIptv2ManagementUcEngine { | ... | @@ -73,7 +106,7 @@ public class UcEventBusIptv2ManagementUcEngine { |
73 | * @param content | 106 | * @param content |
74 | * @return | 107 | * @return |
75 | */ | 108 | */ |
76 | private DataSyncMsg parseContent(String content) throws ParseException { | 109 | private void parseContent(String content) throws ParseException { |
77 | 110 | ||
78 | CommonMsg commonMsg = JSONUtil.parseMsg2Object(content, CommonMsg.class); | 111 | CommonMsg commonMsg = JSONUtil.parseMsg2Object(content, CommonMsg.class); |
79 | 112 | ||
... | @@ -98,120 +131,147 @@ public class UcEventBusIptv2ManagementUcEngine { | ... | @@ -98,120 +131,147 @@ public class UcEventBusIptv2ManagementUcEngine { |
98 | 131 | ||
99 | DataSyncMsg dataSyncMsg = new DataSyncMsg(); | 132 | DataSyncMsg dataSyncMsg = new DataSyncMsg(); |
100 | dataSyncMsg.setEventType(evt); | 133 | dataSyncMsg.setEventType(evt); |
101 | DataSyncMsg.MsgData msgData1 = new DataSyncMsg.MsgData(); | 134 | DataSyncMsg.MsgData msg = new DataSyncMsg.MsgData(); |
102 | |||
103 | 135 | ||
104 | Integer playDurationValueTotal = 0; | 136 | Integer playDurationValueTotal = 0; |
105 | |||
106 | if (StringUtils.isNotBlank(platformAccount)) { | 137 | if (StringUtils.isNotBlank(platformAccount)) { |
107 | 138 | ||
108 | UserTvDTO userTvDTO = this.userTvService.findByPlatformAccount(platformAccount); | 139 | UserTvDTO userTvDTO = this.userTvService.findByPlatformAccount(platformAccount); |
109 | 140 | ||
110 | if(Objects.nonNull(userTvDTO)) { | 141 | if(Objects.nonNull(userTvDTO)) { |
111 | 142 | // 用大屏账号+日期做为key,并判断这个key是否存在 ,数据类型为hash eg:<total,1>,<1,playDuration>,<2,playDuration> | |
112 | String key = platformAccount+"|"+formatDate; | 143 | String key = platformAccount+"|"+formatDate; |
113 | Map<Object, Object> hmget = | 144 | Map<Object, Object> hmget = |
114 | this.redisUtils.hmget(key); | 145 | this.redisUtils.hmget(key); |
115 | 146 | ||
116 | int maxSize = 1; | 147 | if (MapUtils.isEmpty(hmget)) { |
117 | if (MapUtils.isNotEmpty(hmget)) { | ||
118 | 148 | ||
119 | Set<Object> objects = hmget.keySet(); | 149 | // 初始化播放总时长<total>和第一个播放时间 |
150 | playDurationValueTotal = playDuration; | ||
151 | Map<String, Object> map = new HashMap<>(); | ||
152 | map.put("total", playDurationValueTotal); | ||
153 | map.put("1", playDuration); | ||
154 | this.redisUtils.hmset(key, map, 129600); | ||
120 | 155 | ||
121 | Integer playDurationValueTotal_ = 0; | 156 | } else { |
122 | for (Object key_ : objects) { | 157 | |
158 | // 计算播放总时长 total = 播放总时长+当前播放时长 | ||
159 | Integer total = this.getRedisTotal(hmget); | ||
160 | playDurationValueTotal = total + playDuration; | ||
161 | |||
162 | } | ||
163 | |||
164 | Integer totalKey = this.getRedisTotalKey(hmget); | ||
165 | Integer maxSize = totalKey + 1; | ||
166 | |||
167 | // DataSyncMsg dataSyncMsg1 = | ||
168 | this.checkTask(playDurationValueTotal, time, deviceType, | ||
169 | mediaCode, mediaId, mediaName, dataSyncMsg, msg, userTvDTO); | ||
170 | |||
171 | // if (Objects.nonNull(dataSyncMsg1)) { | ||
123 | 172 | ||
124 | if (key_.toString().equalsIgnoreCase("total")) { | ||
125 | playDurationValueTotal_ = Integer.valueOf(hmget.get(key_).toString()); | ||
126 | if (playDurationValueTotal_ > 1440) { | ||
127 | maxSize = objects.size(); | ||
128 | Integer maxTotal = maxSize+1; | ||
129 | Integer playDurationValue = Integer.valueOf(hmget.get(key_).toString()); | ||
130 | playDurationValueTotal = playDurationValue+playDuration; | ||
131 | Map<String, Object> map = new HashMap<>(); | 173 | Map<String, Object> map = new HashMap<>(); |
132 | map.put(String.valueOf(maxTotal), playDuration); | 174 | map.put(String.valueOf(maxSize), playDuration); |
133 | map.put("total", playDurationValueTotal); | 175 | map.put("total", playDurationValueTotal); |
134 | this.redisUtils.hmset(key, map, 172800); | 176 | this.redisUtils.hmset(key, map); |
135 | return null; | 177 | |
178 | // } | ||
136 | } | 179 | } |
180 | |||
137 | } | 181 | } |
138 | 182 | ||
139 | } | 183 | } |
140 | 184 | ||
141 | maxSize = objects.size(); | 185 | break; |
142 | 186 | ||
143 | playDurationValueTotal = playDurationValueTotal_ + playDuration; | 187 | } |
144 | 188 | ||
145 | Map<String, Object> map = new HashMap<>(); | 189 | //return null; |
146 | map.put(String.valueOf(maxSize+1), playDuration); | 190 | } |
147 | map.put("total", playDurationValueTotal); | ||
148 | this.redisUtils.hmset(key, map, 172800); | ||
149 | 191 | ||
192 | private DataSyncMsg checkTask(Integer playDurationValueTotal, String time, Integer deviceType, String mediaCode, | ||
193 | Long mediaId, String mediaName, DataSyncMsg dataSyncMsg, | ||
194 | DataSyncMsg.MsgData msgData, UserTvDTO userTvDTO) { | ||
195 | |||
196 | List<TaskAttrDTO> taskAttrDTOList = new ArrayList<>(); | ||
197 | TaskTemplateDTO taskTemplateDTO = this.taskTemplateService.findByType(8); | ||
198 | if (Objects.nonNull(taskTemplateDTO.getId())) { | ||
199 | List<Task> taskList = this.taskService.findByTemplateId(taskTemplateDTO.getId()); | ||
200 | if (CollectionUtils.isNotEmpty(taskList)) { | ||
201 | for (Task task : taskList) { | ||
202 | TaskAttrDTO taskAttrDTO = this.taskAttrService.findByTaskId(task.getId()); | ||
203 | taskAttrDTOList.add(taskAttrDTO); | ||
204 | } | ||
205 | } | ||
206 | } | ||
150 | 207 | ||
151 | } else { | 208 | List<List<Integer>> attrList = new ArrayList<>(); |
209 | if (CollectionUtils.isNotEmpty(taskAttrDTOList)) { | ||
152 | 210 | ||
153 | playDurationValueTotal = playDuration; | 211 | for (TaskAttrDTO taskAttrDTO : taskAttrDTOList) { |
154 | Map<String, Object> map = new HashMap<>(); | ||
155 | map.put("total", playDurationValueTotal); | ||
156 | map.put("1", playDuration); | ||
157 | this.redisUtils.hmset(key, map, 172800); | ||
158 | 212 | ||
213 | String attrStr = taskAttrDTO.getAttrStr(); | ||
214 | if (StringUtils.isNotBlank(attrStr)) { | ||
215 | |||
216 | JSONObject parse = JSONObject.parseObject(attrStr, JSONObject.class); | ||
217 | List<Integer> value = (List<Integer>) parse.get("value"); | ||
218 | attrList.add(value); | ||
159 | } | 219 | } |
160 | 220 | ||
161 | DataSyncMsg dataSyncMsg1 = null; | ||
162 | if (playDurationValueTotal > 0 && playDurationValueTotal <= PLAY_30) { | ||
163 | log.info("playDurationValueTotal ===>>> {}",playDurationValueTotal); | ||
164 | log.info("===>> start dealTask"); | ||
165 | dataSyncMsg1 = getDataSyncMsg(time, deviceType, mediaCode, mediaId, mediaName, playDurationValueTotal, | ||
166 | dataSyncMsg, msgData1, userTvDTO); | ||
167 | } | 221 | } |
168 | 222 | ||
169 | if (playDurationValueTotal >= 31 && playDurationValueTotal <= 60) { | 223 | } |
170 | log.info("playDurationValueTotal ===>>> {}",playDurationValueTotal); | ||
171 | log.info("===>> start dealTask"); | ||
172 | 224 | ||
173 | dataSyncMsg1 = getDataSyncMsg(time, deviceType, mediaCode, mediaId, mediaName, 30, | 225 | int size = attrList.size(); |
174 | dataSyncMsg, msgData1, userTvDTO); | 226 | |
175 | this.taskDeal(dataSyncMsg1); | 227 | DataSyncMsg dataSyncMsg1 = null; |
176 | 228 | ||
177 | dataSyncMsg1 = getDataSyncMsg(time, deviceType, mediaCode, mediaId, mediaName, playDurationValueTotal, | 229 | if (size > 0) { |
178 | dataSyncMsg, msgData1, userTvDTO); | ||
179 | 230 | ||
180 | } | 231 | for (int i = size-1; i >= 0; i--) { |
181 | if (playDurationValueTotal >= 61 && playDurationValueTotal <= 1440) { | ||
182 | log.info("playDurationValueTotal ===>>> {}",playDurationValueTotal); | ||
183 | log.info("===>> start dealTask"); | ||
184 | 232 | ||
185 | dataSyncMsg1 = getDataSyncMsg(time, deviceType, mediaCode, mediaId, mediaName, 30, | 233 | Integer integer = attrList.get(i).get(0); |
186 | dataSyncMsg, msgData1, userTvDTO); | ||
187 | this.taskDeal(dataSyncMsg1); | ||
188 | 234 | ||
189 | dataSyncMsg1 = getDataSyncMsg(time, deviceType, mediaCode, mediaId, mediaName, 60, | 235 | if (playDurationValueTotal >= integer) { |
190 | dataSyncMsg, msgData1, userTvDTO); | 236 | dataSyncMsg1 = getDataSyncMsg(time, deviceType, mediaCode, mediaId, mediaName, integer, dataSyncMsg, |
191 | this.taskDeal(dataSyncMsg1); | 237 | msgData, userTvDTO); |
192 | 238 | ||
193 | dataSyncMsg1 = getDataSyncMsg(time, deviceType, mediaCode, mediaId, mediaName, playDurationValueTotal, | 239 | this.taskDeal(dataSyncMsg1); |
194 | dataSyncMsg, msgData1, userTvDTO); | ||
195 | } | 240 | } |
196 | 241 | ||
197 | log.info("playDurationValueTotal ===>>> {}",playDurationValueTotal); | 242 | } |
198 | log.info("===>> start dealTask"); | ||
199 | /*dataSyncMsg1 = getDataSyncMsg(time, deviceType, mediaCode, mediaId, mediaName, playDurationValueTotal, | ||
200 | dataSyncMsg, msgData1, userTvDTO);*/ | ||
201 | return dataSyncMsg1; | ||
202 | 243 | ||
203 | } | 244 | } |
204 | 245 | ||
246 | return dataSyncMsg1; | ||
205 | } | 247 | } |
206 | 248 | ||
249 | private Integer getRedisTotalKey(Map<Object, Object> hmget) { | ||
250 | Set<Object> objects = hmget.keySet(); | ||
251 | return objects.size(); | ||
207 | } | 252 | } |
208 | 253 | ||
209 | System.out.println(playContent); | 254 | private Integer getRedisTotal(Map<Object, Object> hmget) { |
210 | break; | 255 | Set<Object> objects = hmget.keySet(); |
256 | |||
257 | Integer playDurationValueTotal_ = 0; | ||
258 | |||
259 | for (Object key_ : objects) { | ||
260 | |||
261 | if (key_.toString().equalsIgnoreCase("total")) { | ||
262 | playDurationValueTotal_ = Integer.valueOf(hmget.get(key_).toString()); | ||
263 | return playDurationValueTotal_; | ||
264 | |||
265 | } else { | ||
266 | |||
267 | continue; | ||
268 | |||
269 | } | ||
211 | 270 | ||
212 | } | 271 | } |
213 | 272 | ||
214 | return null; | 273 | return playDurationValueTotal_; |
274 | |||
215 | } | 275 | } |
216 | 276 | ||
217 | private DataSyncMsg getDataSyncMsg(String time, Integer deviceType, String mediaCode, Long mediaId, String mediaName, | 277 | private DataSyncMsg getDataSyncMsg(String time, Integer deviceType, String mediaCode, Long mediaId, String mediaName, | ... | ... |
1 | package com.topdraw.mq.consumer; | 1 | package com.topdraw.mq.consumer; |
2 | 2 | ||
3 | import com.topdraw.config.RabbitMqConfig; | 3 | import com.alibaba.fastjson.JSON; |
4 | import com.alibaba.fastjson.JSONObject; | ||
5 | import com.rabbitmq.client.Channel; | ||
4 | import com.topdraw.mq.domain.DataSyncMsg; | 6 | import com.topdraw.mq.domain.DataSyncMsg; |
5 | import com.topdraw.resttemplate.RestTemplateClient; | 7 | import com.topdraw.resttemplate.RestTemplateClient; |
8 | import com.topdraw.util.FileUtil; | ||
6 | import com.topdraw.util.JSONUtil; | 9 | import com.topdraw.util.JSONUtil; |
7 | import lombok.extern.slf4j.Slf4j; | 10 | import lombok.extern.slf4j.Slf4j; |
8 | import org.springframework.amqp.core.ExchangeTypes; | 11 | import org.apache.commons.collections4.MapUtils; |
12 | import org.apache.commons.lang3.StringUtils; | ||
13 | import org.springframework.amqp.core.Message; | ||
9 | import org.springframework.amqp.rabbit.annotation.*; | 14 | import org.springframework.amqp.rabbit.annotation.*; |
10 | import org.springframework.beans.factory.annotation.Autowired; | 15 | import org.springframework.beans.factory.annotation.Autowired; |
16 | import org.springframework.beans.factory.annotation.Value; | ||
11 | import org.springframework.stereotype.Component; | 17 | import org.springframework.stereotype.Component; |
12 | import org.springframework.util.Assert; | 18 | import org.springframework.util.Assert; |
13 | 19 | ||
20 | import java.io.IOException; | ||
21 | import java.time.LocalDate; | ||
22 | import java.util.Map; | ||
23 | import java.util.Objects; | ||
24 | |||
14 | @Component | 25 | @Component |
15 | @Slf4j | 26 | @Slf4j |
16 | public class UcGatewayIptv2IptvConsumer { | 27 | public class UcGatewayIptv2IptvConsumer { |
... | @@ -21,6 +32,9 @@ public class UcGatewayIptv2IptvConsumer { | ... | @@ -21,6 +32,9 @@ public class UcGatewayIptv2IptvConsumer { |
21 | @Autowired | 32 | @Autowired |
22 | AutoRoute autoUser; | 33 | AutoRoute autoUser; |
23 | 34 | ||
35 | @Value("#{rabbitMqErrorLogConfig.getUcgError()}") | ||
36 | private Map<String, String> error; | ||
37 | |||
24 | /** | 38 | /** |
25 | * 事件 | 39 | * 事件 |
26 | * @param content | 40 | * @param content |
... | @@ -29,14 +43,37 @@ public class UcGatewayIptv2IptvConsumer { | ... | @@ -29,14 +43,37 @@ public class UcGatewayIptv2IptvConsumer { |
29 | * @date 2021/9/7 11:26 上午 | 43 | * @date 2021/9/7 11:26 上午 |
30 | */ | 44 | */ |
31 | @RabbitHandler | 45 | @RabbitHandler |
32 | @RabbitListener(bindings = { | 46 | @RabbitListener(queues = "#{rabbitMqSourceConfig.getUcgEventQueue()}", |
33 | @QueueBinding(value = @Queue(value = RabbitMqConfig.GATEWAY_TO_SERVICE_DIRECT), | 47 | containerFactory = "#{rabbitMqSourceConfig.getUcgEventSource()}", |
34 | exchange = @Exchange(value = ExchangeTypes.DIRECT)) | 48 | autoStartup = "#{rabbitMqSourceConfig.getUcgEventStartUp()}", |
35 | }, containerFactory = "serviceRabbitListenerContainerFactory") | 49 | ackMode = "MANUAL") |
36 | public void ucEventConsumer(String content) { | 50 | public void eventConsumer(Channel channel, Message message, String content) throws IOException { |
37 | log.info(" receive dataSync msg , content is : {} ", content); | 51 | log.info(" receive dataSync msg , content is : {} ", content); |
52 | try { | ||
38 | DataSyncMsg dataSyncMsg = this.parseContent(content); | 53 | DataSyncMsg dataSyncMsg = this.parseContent(content); |
54 | |||
39 | this.taskDeal(dataSyncMsg); | 55 | this.taskDeal(dataSyncMsg); |
56 | |||
57 | channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); | ||
58 | |||
59 | } catch (Exception e) { | ||
60 | |||
61 | channel.basicReject(message.getMessageProperties().getDeliveryTag(), false); | ||
62 | |||
63 | if (MapUtils.isNotEmpty(error)) { | ||
64 | String errorStart = this.error.get("start"); | ||
65 | |||
66 | if (StringUtils.isEmpty(errorStart) || errorStart.equalsIgnoreCase("true")) { | ||
67 | String fileName = this.error.get("fileName")+"_"+ LocalDate.now() +".log"; | ||
68 | String filePath = this.error.get("filePath"); | ||
69 | String filePath1 = filePath+fileName; | ||
70 | FileUtil.writeStringToFile2(filePath1, content, e.getMessage()); | ||
71 | } | ||
72 | |||
73 | } | ||
74 | |||
75 | e.printStackTrace(); | ||
76 | } | ||
40 | log.info("ucEventConsumer ====>>>> end"); | 77 | log.info("ucEventConsumer ====>>>> end"); |
41 | } | 78 | } |
42 | 79 | ||
... | @@ -60,4 +97,115 @@ public class UcGatewayIptv2IptvConsumer { | ... | @@ -60,4 +97,115 @@ public class UcGatewayIptv2IptvConsumer { |
60 | private void taskDeal(DataSyncMsg dataSyncMsg) { | 97 | private void taskDeal(DataSyncMsg dataSyncMsg) { |
61 | this.restTemplateClient.dealTask(dataSyncMsg); | 98 | this.restTemplateClient.dealTask(dataSyncMsg); |
62 | } | 99 | } |
100 | |||
101 | |||
102 | /** | ||
103 | * @description 添加收藏记录 | ||
104 | * @param content 消息内容 | ||
105 | */ | ||
106 | @RabbitHandler | ||
107 | @RabbitListener(queues = "#{rabbitMqSourceConfig.getUcgCollectionQueue()}", | ||
108 | containerFactory = "#{rabbitMqSourceConfig.getUcgCollectionSource()}", | ||
109 | autoStartup = "#{rabbitMqSourceConfig.getUcgCollectionStartUp()}", | ||
110 | ackMode = "MANUAL") | ||
111 | public void collectionConsumer(Channel channel, Message message, String content) throws IOException { | ||
112 | log.info("receive UserCollection add message, content {}", content); | ||
113 | |||
114 | try { | ||
115 | |||
116 | JSONObject jsonObject = JSON.parseObject(content, JSONObject.class); | ||
117 | if (Objects.nonNull(content)) { | ||
118 | String evt = jsonObject.get("evt").toString(); | ||
119 | String msgData = jsonObject.get("msgData").toString(); | ||
120 | switch (evt.toUpperCase()) { | ||
121 | // 添加收藏 | ||
122 | case "ADDCOLLECTION": | ||
123 | this.restTemplateClient.addCollection(msgData); | ||
124 | break; | ||
125 | // 删除收藏 | ||
126 | case "DELETECOLLECTION": | ||
127 | this.restTemplateClient.deleteCollection(msgData); | ||
128 | break; | ||
129 | // 删除全部收藏 | ||
130 | case "DELETEALLCOLLECTION": | ||
131 | this.restTemplateClient.deleteAllCollection(msgData); | ||
132 | break; | ||
133 | default: | ||
134 | break; | ||
135 | |||
136 | } | ||
137 | } | ||
138 | |||
139 | channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); | ||
140 | |||
141 | } catch (Exception e) { | ||
142 | |||
143 | channel.basicReject(message.getMessageProperties().getDeliveryTag(), false); | ||
144 | |||
145 | if (MapUtils.isNotEmpty(error)) { | ||
146 | String errorStart = this.error.get("start"); | ||
147 | |||
148 | if (errorStart.equalsIgnoreCase("true")) { | ||
149 | String fileName = this.error.get("fileName")+"_"+ LocalDate.now() +".log"; | ||
150 | String filePath = this.error.get("filePath"); | ||
151 | String filePath1 = filePath+fileName; | ||
152 | FileUtil.writeStringToFile2(filePath1, content, e.getMessage()); | ||
153 | } | ||
154 | |||
155 | } | ||
156 | |||
157 | e.printStackTrace(); | ||
158 | } | ||
159 | } | ||
160 | |||
161 | /** | ||
162 | * @description 处理观影记录 | ||
163 | * @param content 消息内容 | ||
164 | */ | ||
165 | @RabbitHandler | ||
166 | @RabbitListener(queues = "#{rabbitMqSourceConfig.getViewRecordQueue()}", | ||
167 | containerFactory = "#{rabbitMqSourceConfig.getViewRecordSource()}", | ||
168 | autoStartup = "#{rabbitMqSourceConfig.getViewRecordStartUp()}", | ||
169 | ackMode = "MANUAL") | ||
170 | public void viewRecordConsumer(Channel channel, Message message, String content) throws IOException { | ||
171 | log.info("receive ViewRecord add message, content {}", content); | ||
172 | |||
173 | try { | ||
174 | |||
175 | JSONObject jsonObject = JSON.parseObject(content, JSONObject.class); | ||
176 | if (Objects.nonNull(content)) { | ||
177 | String evt = jsonObject.get("evt").toString(); | ||
178 | String msgData = jsonObject.get("msgData").toString(); | ||
179 | switch (evt.toUpperCase()) { | ||
180 | // 添加收藏 | ||
181 | case "VIEWRECORD": | ||
182 | this.restTemplateClient.dealViewRecord(msgData); | ||
183 | break; | ||
184 | default: | ||
185 | break; | ||
186 | |||
187 | } | ||
188 | } | ||
189 | |||
190 | channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); | ||
191 | |||
192 | } catch (Exception e) { | ||
193 | |||
194 | channel.basicReject(message.getMessageProperties().getDeliveryTag(), false); | ||
195 | |||
196 | if (MapUtils.isNotEmpty(error)) { | ||
197 | String errorStart = this.error.get("start"); | ||
198 | |||
199 | if (errorStart.equalsIgnoreCase("true")) { | ||
200 | String fileName = this.error.get("fileName")+"_"+ LocalDate.now() +".log"; | ||
201 | String filePath = this.error.get("filePath"); | ||
202 | String filePath1 = filePath+fileName; | ||
203 | FileUtil.writeStringToFile2(filePath1, content, e.getMessage()); | ||
204 | } | ||
205 | |||
206 | } | ||
207 | |||
208 | e.printStackTrace(); | ||
209 | } | ||
210 | } | ||
63 | } | 211 | } | ... | ... |
... | @@ -2,20 +2,23 @@ package com.topdraw.mq.consumer; | ... | @@ -2,20 +2,23 @@ package com.topdraw.mq.consumer; |
2 | 2 | ||
3 | 3 | ||
4 | import com.alibaba.fastjson.JSONObject; | 4 | import com.alibaba.fastjson.JSONObject; |
5 | import com.topdraw.config.RabbitMqConfig; | 5 | import com.rabbitmq.client.Channel; |
6 | import com.topdraw.mq.domain.SubscribeBean; | 6 | import com.topdraw.mq.domain.SubscribeBean; |
7 | import com.topdraw.resttemplate.RestTemplateClient; | 7 | import com.topdraw.resttemplate.RestTemplateClient; |
8 | import com.topdraw.utils.RedisUtils; | 8 | import com.topdraw.util.FileUtil; |
9 | import com.topdraw.utils.StringUtils; | ||
10 | import lombok.extern.slf4j.Slf4j; | 9 | import lombok.extern.slf4j.Slf4j; |
11 | import org.springframework.amqp.core.ExchangeTypes; | 10 | import org.apache.commons.collections4.MapUtils; |
11 | import org.springframework.amqp.core.Message; | ||
12 | import org.springframework.amqp.rabbit.annotation.*; | 12 | import org.springframework.amqp.rabbit.annotation.*; |
13 | import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry; | ||
14 | import org.springframework.beans.factory.annotation.Autowired; | 13 | import org.springframework.beans.factory.annotation.Autowired; |
15 | import org.springframework.beans.factory.annotation.Value; | 14 | import org.springframework.beans.factory.annotation.Value; |
16 | import org.springframework.stereotype.Component; | 15 | import org.springframework.stereotype.Component; |
17 | import org.springframework.transaction.annotation.Transactional; | 16 | import org.springframework.transaction.annotation.Transactional; |
18 | 17 | ||
18 | import java.io.IOException; | ||
19 | import java.time.LocalDate; | ||
20 | import java.util.Map; | ||
21 | |||
19 | /** | 22 | /** |
20 | * 微信事件 | 23 | * 微信事件 |
21 | */ | 24 | */ |
... | @@ -28,42 +31,9 @@ public class WeiXinEventConsumer { | ... | @@ -28,42 +31,9 @@ public class WeiXinEventConsumer { |
28 | 31 | ||
29 | private static final String QR_CODE_URL = "QR_CODE_URL_"; | 32 | private static final String QR_CODE_URL = "QR_CODE_URL_"; |
30 | 33 | ||
31 | /** | 34 | @Value("#{rabbitMqErrorLogConfig.getWechatError()}") |
32 | * @description 删除用户收藏记录 | 35 | private Map<String, String> error; |
33 | * @param content 消息内容 | ||
34 | */ | ||
35 | /*@RabbitHandler | ||
36 | @RabbitListener(bindings = { | ||
37 | @QueueBinding(value = @Queue(value = RabbitMqConfig.COLLECTION_DELETE_QUEUE), | ||
38 | exchange = @Exchange(value = ExchangeTypes.DIRECT))}, | ||
39 | containerFactory = "managementRabbitListenerContainerFactory")*/ | ||
40 | public void deleteCollection(String content) { | ||
41 | try { | ||
42 | log.info("receive UserCollection delete message, content {}", content); | ||
43 | this.restTemplateClient.deleteCollection(content); | ||
44 | } catch (Exception e) { | ||
45 | log.error("CollectionDeleteConsumer || UserCollection delete error || {}", e.toString(), e); | ||
46 | } | ||
47 | } | ||
48 | 36 | ||
49 | /** | ||
50 | * @description 删除全部收藏记录 | ||
51 | * @param content 消息内容 | ||
52 | */ | ||
53 | /*@RabbitHandler | ||
54 | @RabbitListener(bindings = { | ||
55 | @QueueBinding(value = @Queue(value = RabbitMqConfig.COLLECTION_DELETE_ALL_QUEUE), | ||
56 | exchange = @Exchange(value = ExchangeTypes.DIRECT))}, | ||
57 | containerFactory = "managementRabbitListenerContainerFactory")*/ | ||
58 | @Transactional | ||
59 | public void deleteAllCollection(String content) { | ||
60 | try { | ||
61 | log.info("receive UserCollection delete all message, content {}", content); | ||
62 | this.restTemplateClient.deleteAllCollection(content); | ||
63 | } catch (Exception e) { | ||
64 | log.error("CollectionDeleteConsumer || UserCollection delete all error || {}", e.toString(), e); | ||
65 | } | ||
66 | } | ||
67 | 37 | ||
68 | /** | 38 | /** |
69 | * 关注和取关事件 | 39 | * 关注和取关事件 |
... | @@ -74,13 +44,12 @@ public class WeiXinEventConsumer { | ... | @@ -74,13 +44,12 @@ public class WeiXinEventConsumer { |
74 | * } | 44 | * } |
75 | * @param content | 45 | * @param content |
76 | */ | 46 | */ |
77 | /* @RabbitHandler | 47 | @RabbitHandler |
78 | @RabbitListener(bindings = { | 48 | @RabbitListener(queues = "#{rabbitMqSourceConfig.getWechatQueue()}", |
79 | @QueueBinding(value = @Queue(value = RabbitMqConfig.WEIXIN_SUBORUNSUB_QUEUE), | 49 | containerFactory = "#{rabbitMqSourceConfig.getWechatSource()}", |
80 | exchange = @Exchange(value = ExchangeTypes.DIRECT))}, | 50 | autoStartup = "#{rabbitMqSourceConfig.getWechatStartUp()}", ackMode = "MANUAL") |
81 | containerFactory = "managementRabbitListenerContainerFactory")*/ | ||
82 | @Transactional | 51 | @Transactional |
83 | public void subOrUnSubEvent(String content) { | 52 | public void subOrUnSubEvent(Channel channel, Message message, String content) throws IOException { |
84 | try { | 53 | try { |
85 | log.info("receive wxu subOrUnSub message, content {}", content); | 54 | log.info("receive wxu subOrUnSub message, content {}", content); |
86 | JSONObject jsonObject = JSONObject.parseObject(content); | 55 | JSONObject jsonObject = JSONObject.parseObject(content); |
... | @@ -109,30 +78,31 @@ public class WeiXinEventConsumer { | ... | @@ -109,30 +78,31 @@ public class WeiXinEventConsumer { |
109 | if (event.equals("unsubscribe")) | 78 | if (event.equals("unsubscribe")) |
110 | this.restTemplateClient.unsubscribe(subscribeBean); | 79 | this.restTemplateClient.unsubscribe(subscribeBean); |
111 | 80 | ||
81 | channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); | ||
112 | } | 82 | } |
113 | 83 | ||
114 | } catch (Exception e) { | 84 | } catch (Exception e) { |
115 | log.error("WXSubscribeConsumer || subOrUnSub msg error || {} || {}", content, e.getMessage()); | 85 | log.error("WXSubscribeConsumer || subOrUnSub msg error || {} || {}", content, e.getMessage()); |
86 | |||
87 | channel.basicReject(message.getMessageProperties().getDeliveryTag(), false); | ||
88 | |||
89 | if (MapUtils.isNotEmpty(error)) { | ||
90 | String errorStart = this.error.get("start"); | ||
91 | |||
92 | if (errorStart.equalsIgnoreCase("true")) { | ||
93 | String fileName = this.error.get("fileName")+"_"+LocalDate.now() +".log"; | ||
94 | String filePath = this.error.get("filePath"); | ||
95 | String filePath1 = filePath+fileName; | ||
96 | FileUtil.writeStringToFile2(filePath1, content, e.getMessage()); | ||
116 | } | 97 | } |
98 | |||
117 | } | 99 | } |
118 | 100 | ||
119 | /** | 101 | e.printStackTrace(); |
120 | * @description 添加收藏记录 | 102 | log.info("ucEventConsumer ====>>>> end"); |
121 | * @param content 消息内容 | ||
122 | */ | ||
123 | /*@RabbitHandler | ||
124 | @RabbitListener(bindings = { | ||
125 | @QueueBinding(value = @Queue(value = RabbitMqConfig.COLLECTION_ADD_QUEUE), | ||
126 | exchange = @Exchange(value = ExchangeTypes.DIRECT))}, | ||
127 | containerFactory = "managementRabbitListenerContainerFactory")*/ | ||
128 | @Transactional | ||
129 | public void addCollection(String content) { | ||
130 | try { | ||
131 | log.info("receive UserCollection add message, content {}", content); | ||
132 | this.restTemplateClient.addCollection(content); | ||
133 | } catch (Exception e) { | ||
134 | log.error("CollectionAddConsumer || UserCollection add error || {}", e.toString(), e); | ||
135 | } | 103 | } |
136 | } | 104 | } |
137 | 105 | ||
106 | |||
107 | |||
138 | } | 108 | } | ... | ... |
... | @@ -173,4 +173,19 @@ public class RestTemplateClient { | ... | @@ -173,4 +173,19 @@ public class RestTemplateClient { |
173 | log.info("uc response: " + entityBody);*/ | 173 | log.info("uc response: " + entityBody);*/ |
174 | return null; | 174 | return null; |
175 | } | 175 | } |
176 | |||
177 | public String dealViewRecord(String content) { | ||
178 | String url = BASE_URL + "/uce/userOperation/addCollection"; | ||
179 | //处理接口调用 中文不显示问题 | ||
180 | content = new String(Base64.getEncoder().encode(content.getBytes(StandardCharsets.UTF_8))); | ||
181 | |||
182 | restTemplate.postForEntity(url, content, String.class); | ||
183 | /* ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, content, String.class); | ||
184 | String entityBody = ""; | ||
185 | if (responseEntity.getStatusCode().is2xxSuccessful()) { | ||
186 | entityBody = responseEntity.getBody(); | ||
187 | } | ||
188 | log.info("uc response: " + entityBody);*/ | ||
189 | return null; | ||
190 | } | ||
176 | } | 191 | } | ... | ... |
src/main/java/com/topdraw/util/FileUtil.java
0 → 100644
1 | package com.topdraw.util; | ||
2 | |||
3 | import java.io.BufferedWriter; | ||
4 | import java.io.File; | ||
5 | import java.io.FileWriter; | ||
6 | import java.io.IOException; | ||
7 | import java.time.LocalDateTime; | ||
8 | |||
9 | /** | ||
10 | * @author : | ||
11 | * @description: | ||
12 | * @function : | ||
13 | * @date :Created in 2022/5/12 11:43 | ||
14 | * @version: : | ||
15 | * @modified By: | ||
16 | * @since : modified in 2022/5/12 11:43 | ||
17 | */ | ||
18 | public class FileUtil { | ||
19 | |||
20 | private static void createFile(String filePath){ | ||
21 | File testFile = new File(filePath); | ||
22 | File fileParent = testFile.getParentFile();//返回的是File类型,可以调用exsit()等方法 | ||
23 | //String fileParentPath = testFile.getParent();//返回的是String类型 | ||
24 | |||
25 | if (!fileParent.exists()) { | ||
26 | fileParent.mkdirs();// 能创建多级目录 | ||
27 | } | ||
28 | |||
29 | if (!testFile.exists()) { | ||
30 | try { | ||
31 | testFile.createNewFile();//有路径才能创建文件 | ||
32 | } catch (IOException e) { | ||
33 | e.printStackTrace(); | ||
34 | } | ||
35 | } | ||
36 | } | ||
37 | |||
38 | public static void writeStringToFile2(String filePath, String content, String error) { | ||
39 | try { | ||
40 | String property = System.getProperty("user.dir"); | ||
41 | filePath = property + filePath; | ||
42 | createFile(filePath); | ||
43 | |||
44 | FileWriter fw = new FileWriter(filePath, true); | ||
45 | BufferedWriter bw = new BufferedWriter(fw); | ||
46 | bw.append(LocalDateTime.now()+"\n"); | ||
47 | bw.write("【content】==>> \n"+content+"\n"); | ||
48 | bw.write("【error】==>> \n"+error+"\n"); | ||
49 | bw.write("----------------------------------------------------------------\n"); | ||
50 | bw.close(); | ||
51 | fw.close(); | ||
52 | } catch (Exception e) { | ||
53 | e.printStackTrace(); | ||
54 | } | ||
55 | } | ||
56 | |||
57 | } |
src/main/java/com/topdraw/util/ListUtil.java
0 → 100644
1 | package com.topdraw.util; | ||
2 | |||
3 | import java.util.ArrayList; | ||
4 | import java.util.List; | ||
5 | |||
6 | /** | ||
7 | * @author : | ||
8 | * @description: | ||
9 | * @function : | ||
10 | * @date :Created in 2022/5/5 12:57 | ||
11 | * @version: : | ||
12 | * @modified By: | ||
13 | * @since : modified in 2022/5/5 12:57 | ||
14 | */ | ||
15 | public class ListUtil { | ||
16 | |||
17 | public static List<List<Integer>> sortList(List<List<Integer>> list, String desc) { | ||
18 | |||
19 | |||
20 | return null; | ||
21 | } | ||
22 | |||
23 | public static boolean containsValue(List<Integer> list, Integer value) { | ||
24 | |||
25 | |||
26 | return false; | ||
27 | } | ||
28 | |||
29 | public static void main(String[] args) { | ||
30 | List<List<Integer>> listList = new ArrayList<>(); | ||
31 | |||
32 | List<Integer> integerList = new ArrayList<>(); | ||
33 | integerList.add(1); | ||
34 | integerList.add(30); | ||
35 | |||
36 | List<Integer> integerList1 = new ArrayList<>(); | ||
37 | integerList1.add(31); | ||
38 | integerList1.add(60); | ||
39 | |||
40 | listList.add(integerList); | ||
41 | listList.add(integerList1); | ||
42 | |||
43 | // Integer firstMaxInteger = listList.get(0).get; | ||
44 | /*Integer firstMaxInteger = 0; | ||
45 | for (List<Integer> integers : listList) { | ||
46 | |||
47 | firstMaxInteger = integers.get(integerList.size() - 1); | ||
48 | |||
49 | |||
50 | }*/ | ||
51 | } | ||
52 | |||
53 | } |
1 | package com.topdraw.util; | ||
2 | |||
3 | |||
4 | import org.redisson.api.RLock; | ||
5 | |||
6 | public class RedissonUtil { | ||
7 | |||
8 | public static void lock(RLock rLock){ | ||
9 | rLock.lock(); | ||
10 | } | ||
11 | |||
12 | |||
13 | public static void unlock(RLock rLock){ | ||
14 | if (rLock.isLocked() && rLock.isHeldByCurrentThread()) | ||
15 | rLock.unlock(); | ||
16 | } | ||
17 | |||
18 | |||
19 | } |
1 | spring: | 1 | spring: |
2 | # 数据源 | 2 | # 数据源 |
3 | datasource: | 3 | datasource: |
4 | # 数据源地址 | ||
5 | # url: jdbc:log4jdbc:mysql://139.196.192.242:3306/tj_user_0819?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false | ||
6 | # # 用户名 | ||
7 | # username: root | ||
8 | # # 密码 | ||
9 | # password: Tjlh@2017 | ||
10 | url: jdbc:log4jdbc:mysql://122.112.214.149:3306/tj_user_iptv?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false | 4 | url: jdbc:log4jdbc:mysql://122.112.214.149:3306/tj_user_iptv?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false |
11 | username: root | 5 | username: root |
12 | password: root | 6 | password: root |
... | @@ -70,47 +64,92 @@ mutil-mq: | ... | @@ -70,47 +64,92 @@ mutil-mq: |
70 | service: | 64 | service: |
71 | # ip | 65 | # ip |
72 | host: 122.112.214.149 | 66 | host: 122.112.214.149 |
67 | # host: 139.196.145.150 | ||
73 | # 端口 | 68 | # 端口 |
74 | port: 5672 | 69 | port: 5672 |
75 | # 用户名 | 70 | # 用户名 |
76 | username: guest | 71 | username: guest |
72 | # username: admin | ||
77 | # 密码 | 73 | # 密码 |
78 | password: guest | 74 | password: guest |
75 | # password: Topdraw1qaz | ||
79 | # 虚拟空间 | 76 | # 虚拟空间 |
80 | virtual-host: member_center | 77 | virtual-host: member_center_chongshu |
81 | # host: 139.196.145.150 # rabbitmq的连接地址 | ||
82 | # port: 5672 # rabbitmq的连接端口号 | ||
83 | # virtual-host: member_center # rabbitmq的虚拟hosthhh | ||
84 | # username: admin # rabbitmq的用户名 | ||
85 | # password: Topdraw1qaz # rabbitmq的密码 | ||
86 | publisher-confirms: true #如果对异步消息需要回调必须设置为true | 78 | publisher-confirms: true #如果对异步消息需要回调必须设置为true |
87 | 79 | ||
88 | # 管理侧 | 80 | # 管理侧 |
89 | management: | 81 | management: |
90 | # ip | 82 | # host: 122.112.214.149 # rabbitmq的连接地址 |
91 | # host: 139.196.145.150 | ||
92 | # # 端口 | ||
93 | # port: 5672 | ||
94 | # # 用户名 | ||
95 | # username: admin | ||
96 | # # 密码 | ||
97 | # password: Topdraw1qaz | ||
98 | # # 虚拟空间 | ||
99 | # virtual-host: member_center | ||
100 | host: 122.112.214.149 # rabbitmq的连接地址 | 83 | host: 122.112.214.149 # rabbitmq的连接地址 |
101 | port: 5672 # rabbitmq的连接端口号 | 84 | port: 5672 # rabbitmq的连接端口号 |
102 | virtual-host: member_center # rabbitmq的虚拟hosthhh | 85 | virtual-host: none # rabbitmq的虚拟host |
103 | username: guest # rabbitmq的用户名 | 86 | username: guest # rabbitmq的用户名 |
104 | password: guest # rabbitmq的密码 | 87 | password: guest # rabbitmq的密码 |
88 | # username: admin # rabbitmq的用户名 | ||
89 | # password: Topdraw1qaz # rabbitmq的密码 | ||
105 | publisher-confirms: true #如果对异步消息需要回调必须设置为true | 90 | publisher-confirms: true #如果对异步消息需要回调必须设置为true |
106 | 91 | ||
107 | # 服务属性 | 92 | # 服务属性 |
108 | service: | 93 | service: |
109 | #平台类型 service: 服务侧 management: 管理侧 | 94 | mq: |
110 | platform: service | 95 | list: |
111 | # 服务域 mobile:小屏侧 vis:大屏侧 | 96 | - source: event |
112 | type: vis | 97 | exchange: event.exchange |
98 | queue: event.queue | ||
99 | exchange-type: direct | ||
100 | routing-key: | ||
101 | active: | ||
102 | - source: collection | ||
103 | exchange: collection.exchange | ||
104 | queue: collection.queue | ||
105 | exchange-type: direct | ||
106 | routing-key: | ||
107 | active: | ||
108 | - source: viewRecord | ||
109 | exchange: viewRecord.exchange | ||
110 | queue: viewRecord.queue | ||
111 | exchange-type: direct | ||
112 | routing-key: | ||
113 | active: | ||
114 | - source: eventBus | ||
115 | exchange: uc.eventbus | ||
116 | queue: uc.eventbus | ||
117 | exchange-type: topic | ||
118 | routing-key: uc.eventbus.*.topic | ||
119 | active: | ||
120 | - source: uce | ||
121 | exchange: uce.exchange | ||
122 | queue: uce.queue | ||
123 | exchange-type: direct | ||
124 | routing-key: | ||
125 | active: service | ||
126 | - source: wechat | ||
127 | exchange: wechat.exchange | ||
128 | queue: weixin.subOrUnSub.queue | ||
129 | exchange-type: direct | ||
130 | routing-key: | ||
131 | active: | ||
132 | error: | ||
133 | logs: | ||
134 | list: | ||
135 | - type: eventBus | ||
136 | filePath: /logs/mq/eventBus/ | ||
137 | fileName: error | ||
138 | start: on | ||
139 | - type: ucg | ||
140 | filePath: /logs/mq/ucg/ | ||
141 | fileName: error | ||
142 | start: on | ||
143 | - type: uce | ||
144 | filePath: /logs/mq/uce/ | ||
145 | fileName: error | ||
146 | start: on | ||
147 | - type: wechat | ||
148 | filePath: /logs/mq/wechat/ | ||
149 | fileName: error | ||
150 | start: on | ||
113 | 151 | ||
114 | # uc-engine服务地址 | 152 | # uc-engine服务地址 |
115 | api: | 153 | api: |
116 | baseUrl: http://127.0.0.1:8447 | 154 | baseUrl: http://127.0.0.1:8447 |
155 | ... | ... |
... | @@ -2,8 +2,16 @@ package com.topdraw.resttemplate; | ... | @@ -2,8 +2,16 @@ package com.topdraw.resttemplate; |
2 | 2 | ||
3 | import com.alibaba.fastjson.JSONObject; | 3 | import com.alibaba.fastjson.JSONObject; |
4 | import com.topdraw.BaseTest; | 4 | import com.topdraw.BaseTest; |
5 | import org.apache.poi.hssf.usermodel.HSSFWorkbook; | ||
6 | import org.apache.poi.util.IOUtils; | ||
5 | import org.junit.Test; | 7 | import org.junit.Test; |
6 | import org.springframework.beans.factory.annotation.Autowired; | 8 | import org.springframework.beans.factory.annotation.Autowired; |
9 | import org.springframework.context.ApplicationContext; | ||
10 | |||
11 | import java.io.*; | ||
12 | import java.lang.reflect.Field; | ||
13 | import java.time.LocalDate; | ||
14 | import java.time.LocalDateTime; | ||
7 | 15 | ||
8 | public class RestTemplateTest extends BaseTest { | 16 | public class RestTemplateTest extends BaseTest { |
9 | 17 | ||
... | @@ -16,4 +24,92 @@ public class RestTemplateTest extends BaseTest { | ... | @@ -16,4 +24,92 @@ public class RestTemplateTest extends BaseTest { |
16 | System.out.println(memberInfo); | 24 | System.out.println(memberInfo); |
17 | } | 25 | } |
18 | 26 | ||
27 | @Test | ||
28 | public void error(){ | ||
29 | String msg3 = "{\n" + | ||
30 | " \"evt\": \"play\", \n" + | ||
31 | " \"deviceType\": 1, \n" + | ||
32 | // " \"time\": \"2022-04-14 00:10:09\",\n" + | ||
33 | " \"time\": \"2022-05-03 23:10:09\",\n" + | ||
34 | " \"msgData\": {\n" + | ||
35 | " \"platformAccount\": \"topdraw\", \n" + | ||
36 | " \"playDuration\": "+23+", \n" + | ||
37 | " \"mediaCode\": \"\", \n" + | ||
38 | " \"mediaName\": \"\"\n" + | ||
39 | " }\n" + | ||
40 | " }"; | ||
41 | |||
42 | String classpathUrlPrefix = ApplicationContext.CLASSPATH_URL_PREFIX; | ||
43 | String panfu = ""; | ||
44 | // String filePath = classpathUrlPrefix+"/mq/play/error.log"; | ||
45 | String property = System.getProperty("user.dir"); | ||
46 | String separator = File.separator; | ||
47 | System.out.println(property); | ||
48 | String fileName = "error_"+ LocalDate.now() +".log"; | ||
49 | String filePath = property+separator+"logs"+separator+"mq"+separator+fileName; | ||
50 | createFile(filePath); | ||
51 | this.writeStringToFile2(filePath, msg3); | ||
52 | |||
53 | String a = "{\n" + | ||
54 | "\"data\": [\n" + | ||
55 | "\t{\n" + | ||
56 | "\t\"app_id\": 57,\n" + | ||
57 | "\t\"user_id\": 1,\n" + | ||
58 | "\t\"type\": 1,\n" + | ||
59 | "\t\"name\": \"PersonalCollectionRecords\",\n" + | ||
60 | "\t\"count\": 22,\n" + | ||
61 | "\t\"images\": \"{\\\"map\\\":{\\\"poster\\\":[0]},\\\"list\\\":[{\\\"id\\\":47422,\\\"type\\\":2,\\\"width\\\":222,\\\"height\\\":294,\\\"fileUrl\\\":\\\"upload/image/media/2020-07-30/9a8a02db-9444-4bff-ba54-ea784ae4f88c.jpg\\\",\\\"size\\\":104643}]}\",\n" + | ||
62 | "\t\"id\": 756756,\n" + | ||
63 | "\t\"user_collection_id\": 1,\n" + | ||
64 | "\t\"detail_folder_code\": \"Default\",\n" + | ||
65 | "\t\"detail_type\": \"MEDIA\",\n" + | ||
66 | "\t\"detail_id\": 46532,\n" + | ||
67 | "\t\"detail_code\": \"media_558bc45a-5480-46ec-be9a-c749ffdbdf49\",\n" + | ||
68 | "\t\"detail_name\": \"熊出没之探险日记2\",\n" + | ||
69 | "\t\"detail_total_index\": 40,\n" + | ||
70 | "\t\"detail_sequence\": 1,\n" + | ||
71 | "\t\"create_time\": 1644503167000,\n" + | ||
72 | "\t\"update_time\": 1644503167000\n" + | ||
73 | "\t}\n" + | ||
74 | "\t],\n" + | ||
75 | "\"platformAccount\": \"topdraw\"\n" + | ||
76 | "}"; | ||
77 | } | ||
78 | |||
79 | private void createFile(String filePath){ | ||
80 | File testFile = new File(filePath); | ||
81 | File fileParent = testFile.getParentFile();//返回的是File类型,可以调用exsit()等方法 | ||
82 | String fileParentPath = testFile.getParent();//返回的是String类型 | ||
83 | System.out.println("fileParent:" + fileParent); | ||
84 | System.out.println("fileParentPath:" + fileParentPath); | ||
85 | if (!fileParent.exists()) { | ||
86 | fileParent.mkdirs();// 能创建多级目录 | ||
87 | } | ||
88 | |||
89 | if (!testFile.exists()) { | ||
90 | try { | ||
91 | testFile.createNewFile();//有路径才能创建文件 | ||
92 | } catch (IOException e) { | ||
93 | e.printStackTrace(); | ||
94 | } | ||
95 | } | ||
96 | |||
97 | System.out.println(testFile); | ||
98 | } | ||
99 | |||
100 | public void writeStringToFile2(String filePath, String error) { | ||
101 | try { | ||
102 | FileWriter fw = new FileWriter(filePath, true); | ||
103 | BufferedWriter bw = new BufferedWriter(fw); | ||
104 | bw.append(LocalDateTime.now()+"=>"+error+"\n"); | ||
105 | //bw.write("我是");// 往已有的文件上添加字符串 | ||
106 | //bw.write("程序猿\n "); | ||
107 | bw.close(); | ||
108 | fw.close(); | ||
109 | } catch (Exception e) { | ||
110 | // TODO Auto-generated catch block | ||
111 | e.printStackTrace(); | ||
112 | } | ||
113 | } | ||
114 | |||
19 | } | 115 | } | ... | ... |
-
Please register or sign in to post a comment