diff --git a/beacon-api/src/main/java/com/mashibing/api/filter/impl/IPCheckFilter.java b/beacon-api/src/main/java/com/mashibing/api/filter/impl/IPCheckFilter.java index 746c392..21c3d1f 100644 --- a/beacon-api/src/main/java/com/mashibing/api/filter/impl/IPCheckFilter.java +++ b/beacon-api/src/main/java/com/mashibing/api/filter/impl/IPCheckFilter.java @@ -11,6 +11,8 @@ import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** * @author zjw * @description 校验请求的ip地址是否是白名单 @@ -29,11 +31,11 @@ public class IPCheckFilter implements CheckFilter { public void check(StandardSubmit submit) { log.info("【接口模块-校验ip】 校验ing…………"); //1. 根据CacheClient根据客户的apikey以及ipAddress去查询客户的IP白名单 - String ip = cacheClient.hgetString(CacheConstant.CLIENT_BUSINESS + submit.getApikey(), IP_ADDRESS); + List ip = (List) cacheClient.hget(CacheConstant.CLIENT_BUSINESS + submit.getApikey(), IP_ADDRESS); submit.setIp(ip); //2. 如果IP白名单为null,直接放行 - if(StringUtils.isEmpty(ip) || ip.contains(submit.getRealIP())){ + if(ip != null || ip.contains(submit.getRealIP())){ log.info("【接口模块-校验ip】 客户端请求IP合法!"); return; } diff --git a/beacon-cache/src/main/java/com/mashibing/cache/controller/CacheController.java b/beacon-cache/src/main/java/com/mashibing/cache/controller/CacheController.java index 37bd120..4ea4e9d 100644 --- a/beacon-cache/src/main/java/com/mashibing/cache/controller/CacheController.java +++ b/beacon-cache/src/main/java/com/mashibing/cache/controller/CacheController.java @@ -8,8 +8,6 @@ import org.springframework.data.redis.core.ZSetOperations; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Set; @@ -30,7 +28,9 @@ public class CacheController { @PostMapping(value = "/cache/hmset/{key}") public void hmset(@PathVariable(value = "key") String key, @RequestBody Map map) { log.info("【缓存模块】 hmset方法,存储key = {},存储value = {}", key, map); - redisClient.putMap(key, map); +// 因为飞马框架更新,这里的方法名称更改了。 +// redisClient.putMap(key, map); + redisClient.hSet(key,map); } @PostMapping(value = "/cache/set/{key}") @@ -68,7 +68,9 @@ public class CacheController { @GetMapping("/cache/hgetall/{key}") public Map hGetAll(@PathVariable(value = "key")String key){ log.info("【缓存模块】 hGetAll方法,获取key ={} 的数据", key); - Map value = redisClient.getMap(key); +// 因为飞马框架更新,这里的方法名称更改了。 +// Map value = redisClient.getMap(key); + Map value = redisClient.hGetAll(key); log.info("【缓存模块】 hGetAll方法,获取key ={} 的数据 value = {}", key,value); return value; } @@ -76,7 +78,9 @@ public class CacheController { @GetMapping("/cache/hget/{key}/{field}") public Object hget(@PathVariable(value = "key")String key,@PathVariable(value = "field")String field){ log.info("【缓存模块】 hget方法,获取key ={},field = {}的数据", key,field); - Object value = redisClient.getMapItem(key, field); +// 因为飞马框架更新,这里的方法名称更改了。 +// Object value = redisClient.getMapItem(key, field); + Object value = redisClient.hGet(key, field); log.info("【缓存模块】 hget方法,获取key ={},field = {} 的数据 value = {}", key,field,value); return value; } @@ -84,7 +88,9 @@ public class CacheController { @GetMapping("/cache/smember/{key}") public Set smember(@PathVariable(value = "key")String key){ log.info("【缓存模块】 smember方法,获取key ={}的数据", key); - Set values = redisClient.sGet(key); +// 因为飞马框架更新,这里的方法名称更改了。 +// Set values = redisClient.sGet(key); + Set values = redisClient.sMembers(key); log.info("【缓存模块】 smember方法,获取key ={} 的数据 value = {}", key,values); return values; } @@ -139,7 +145,9 @@ public class CacheController { @PathVariable(value = "field") String field, @PathVariable(value = "delta") Long delta){ log.info("【缓存模块】 hIncrBy方法,自增 key = {},field = {},number = {}", key,field,delta); - Long result = redisClient.incrementMap(key, field, delta); +// 因为飞马框架更新,这里的方法名称更改了。 +// Long result = redisClient.incrementMap(key, field, delta); + Long result = redisClient.hIncrementBy(key, field, delta); log.info("【缓存模块】 hIncrBy方法,自增 key = {},field = {},number = {},剩余数值为 = {}", key,field,delta,result); return result; } diff --git a/beacon-cache/src/main/java/com/mashibing/cache/controller/TestController.java b/beacon-cache/src/main/java/com/mashibing/cache/controller/TestController.java index e0f2357..a79206c 100644 --- a/beacon-cache/src/main/java/com/mashibing/cache/controller/TestController.java +++ b/beacon-cache/src/main/java/com/mashibing/cache/controller/TestController.java @@ -2,8 +2,6 @@ package com.mashibing.cache.controller; import com.msb.framework.redis.RedisClient; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.RedisOperations; -import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*; import java.util.HashMap; @@ -22,13 +20,13 @@ public class TestController { // 写测试 hash结构 @PostMapping("/test/set/{key}") public String set(@PathVariable String key, @RequestBody Map map){ - redisClient.putMap(key,map); + redisClient.hSet(key,map); return "ok"; } // 读测试 @GetMapping("/test/get/{key}") public Map get(@PathVariable String key){ - Map result = redisClient.getMap(key); + Map result = redisClient.hGetAll(key); return result; } // 管道测试 diff --git a/beacon-common/src/main/java/com/mashibing/common/constant/RabbitMQConstants.java b/beacon-common/src/main/java/com/mashibing/common/constant/RabbitMQConstants.java index 513f0b8..71aa11b 100644 --- a/beacon-common/src/main/java/com/mashibing/common/constant/RabbitMQConstants.java +++ b/beacon-common/src/main/java/com/mashibing/common/constant/RabbitMQConstants.java @@ -34,4 +34,13 @@ public interface RabbitMQConstants { String SMS_GATEWAY = "sms_gateway_topic_"; + /** + * 短信网关模块涉及到的私信队列需要的信息 + */ + String SMS_GATEWAY_NORMAL_EXCHANGE = "sms_gateway_normal_exchange"; + String SMS_GATEWAY_NORMAL_QUEUE = "sms_gateway_normal_queue"; + String SMS_GATEWAY_DEAD_EXCHANGE = "sms_gateway_dead_exchange"; + String SMS_GATEWAY_DEAD_QUEUE = "sms_gateway_dead_queue"; + + } diff --git a/beacon-common/src/main/java/com/mashibing/common/model/StandardSubmit.java b/beacon-common/src/main/java/com/mashibing/common/model/StandardSubmit.java index c929674..2207442 100644 --- a/beacon-common/src/main/java/com/mashibing/common/model/StandardSubmit.java +++ b/beacon-common/src/main/java/com/mashibing/common/model/StandardSubmit.java @@ -11,6 +11,7 @@ import lombok.NoArgsConstructor; import java.io.Serializable; import java.time.LocalDateTime; import java.time.ZoneOffset; +import java.util.List; /** * 在接口模块-策略模块-短信网关模块需要做校验和封装的POJO类对象 @@ -36,7 +37,7 @@ public class StandardSubmit implements Serializable { /** * 客户端的ip白名单,查询缓存 */ - private String ip; + private List ip; /** * 客户业务内的uid,客户请求传递的 diff --git a/beacon-search/src/main/java/com/mashibing/search/mq/SmsWriteLogListener.java b/beacon-search/src/main/java/com/mashibing/search/mq/SmsWriteLogListener.java index a040205..3af2057 100644 --- a/beacon-search/src/main/java/com/mashibing/search/mq/SmsWriteLogListener.java +++ b/beacon-search/src/main/java/com/mashibing/search/mq/SmsWriteLogListener.java @@ -6,6 +6,7 @@ import com.mashibing.common.util.JsonUtil; import com.mashibing.search.service.SearchService; import com.rabbitmq.client.Channel; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; @@ -28,6 +29,7 @@ public class SmsWriteLogListener { private final String INDEX = "sms_submit_log_"; + @RabbitListener(queues = RabbitMQConstants.SMS_WRITE_LOG) public void consume(StandardSubmit submit, Channel channel, Message message) throws IOException { //1、调用搜索模块的添加方法,完成添加操作 diff --git a/beacon-smsgateway/src/main/java/com/mashibing/smsgateway/SmsGatewayStarterApp.java b/beacon-smsgateway/src/main/java/com/mashibing/smsgateway/SmsGatewayStarterApp.java index 22036f7..e5d7075 100644 --- a/beacon-smsgateway/src/main/java/com/mashibing/smsgateway/SmsGatewayStarterApp.java +++ b/beacon-smsgateway/src/main/java/com/mashibing/smsgateway/SmsGatewayStarterApp.java @@ -12,7 +12,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients; */ @SpringBootApplication @EnableDiscoveryClient -@EnableDynamicThreadPool +//@EnableDynamicThreadPool @EnableFeignClients public class SmsGatewayStarterApp { diff --git a/beacon-smsgateway/src/main/java/com/mashibing/smsgateway/config/RabbitMQConfig.java b/beacon-smsgateway/src/main/java/com/mashibing/smsgateway/config/RabbitMQConfig.java index 66ab7ec..77acb2c 100644 --- a/beacon-smsgateway/src/main/java/com/mashibing/smsgateway/config/RabbitMQConfig.java +++ b/beacon-smsgateway/src/main/java/com/mashibing/smsgateway/config/RabbitMQConfig.java @@ -1,18 +1,70 @@ package com.mashibing.smsgateway.config; -import org.springframework.amqp.core.AcknowledgeMode; +import static com.mashibing.common.constant.RabbitMQConstants.*; +import org.springframework.amqp.core.*; import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; /** * 针对性的配置,可以采用当前方式~ * @author zjw * @description */ -//@Configuration +@Configuration public class RabbitMQConfig { + private final int TTL = 10000; + private final String FANOUT_ROUTING_KEY = ""; + + // 声明死信队列,需要准备普通交换机,普通队列,死信交换机,死信队列 + @Bean + public Exchange normalExchange(){ + return ExchangeBuilder.fanoutExchange(SMS_GATEWAY_NORMAL_EXCHANGE).build(); + } + + @Bean + public Queue normalQueue(){ + Queue queue = QueueBuilder.durable(SMS_GATEWAY_NORMAL_QUEUE) + .withArgument("x-message-ttl",TTL) + .withArgument("x-dead-letter-exchange",SMS_GATEWAY_DEAD_EXCHANGE) + .withArgument("x-dead-letter-routing-key",FANOUT_ROUTING_KEY) + .build(); + return queue; + } + + @Bean + public Binding normalBinding(Exchange normalExchange,Queue normalQueue){ + return BindingBuilder.bind(normalQueue).to(normalExchange).with("").noargs(); + } + + @Bean + public Exchange deadExchange(){ + return ExchangeBuilder.fanoutExchange(SMS_GATEWAY_DEAD_EXCHANGE).build(); + } + @Bean + public Queue deadQueue(){ + return QueueBuilder.durable(SMS_GATEWAY_DEAD_QUEUE).build(); + } + @Bean + public Binding deadBinding(Exchange deadExchange,Queue deadQueue){ + return BindingBuilder.bind(deadQueue).to(deadExchange).with("").noargs(); + } + + + + + + + + + + + + + // 配置类的方式修改RabbitMQ消费的方式 // @Bean public SimpleRabbitListenerContainerFactory gatewayContainerFactory(ConnectionFactory connectionFactory, SimpleRabbitListenerContainerFactoryConfigurer configurer){ diff --git a/beacon-smsgateway/src/main/java/com/mashibing/smsgateway/runnable/DeliverRunnable.java b/beacon-smsgateway/src/main/java/com/mashibing/smsgateway/runnable/DeliverRunnable.java index 3e48876..7604f5b 100644 --- a/beacon-smsgateway/src/main/java/com/mashibing/smsgateway/runnable/DeliverRunnable.java +++ b/beacon-smsgateway/src/main/java/com/mashibing/smsgateway/runnable/DeliverRunnable.java @@ -68,7 +68,8 @@ public class DeliverRunnable implements Runnable { } } //4、发送消息,让搜索模块对之前写入的信息做修改,这里需要做一个死信队列,延迟10s发送修改es信息的消息 - + // 声明好具体的交换机和队列后,直接发送report到死信队列即可 + rabbitTemplate.convertAndSend(RabbitMQConstants.SMS_GATEWAY_NORMAL_EXCHANGE,"",report); } } diff --git a/beacon-test/src/main/java/com/mashibing/test/entity/ClientBusiness.java b/beacon-test/src/main/java/com/mashibing/test/entity/ClientBusiness.java index 108a177..9d5b0de 100644 --- a/beacon-test/src/main/java/com/mashibing/test/entity/ClientBusiness.java +++ b/beacon-test/src/main/java/com/mashibing/test/entity/ClientBusiness.java @@ -1,6 +1,11 @@ package com.mashibing.test.entity; +import org.apache.commons.lang.StringUtils; + +import java.util.Arrays; +import java.util.List; + public class ClientBusiness { private long id; @@ -50,8 +55,12 @@ public class ClientBusiness { } - public String getIpAddress() { - return ipAddress; + public List getIpAddress() { + String ips = ipAddress; + if(!StringUtils.isEmpty(ips)){ + return Arrays.asList(ips.split(",")); + } + return null; } public void setIpAddress(String ipAddress) {