1. redisTemplate 使用increment 方法报错
ERR value is not an integer or out of range
这是因为必须使用 stringRedisSerializer、如果你的ResdisConfig使用了其他序列类。那么就可以手动设置
代码如下:
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void set(String key,String value) {
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());
redisTemplate.boundValueOps(key).set(value);
}
2.com.alibaba.fastjson.JSONException: not close json text, token
从redis的list 中获取数据的时候发现这个问题 。
因为使用的是Jackson2JsonRedisSerializer 他对会字符串自动加上双引号,导致没法解析json。
改为StringRedisSerializer 就可以了。
3. 项目中有用到rabbitMQ,启动失败。
Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND – no queue ‘queue-demo’ in vhost ‘/’, class-id=50, method-id=10)
at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:66)
at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:36)
at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:502)
at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:293)
at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:141)
… 13 common frames omitted
Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND – no queue ‘queue-demo’ in vhost ‘/’, class-id=50, method-id=10)
at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:522)
at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:346)
at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:182)
at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:114)
at com.rabbitmq.client.impl.AMQConnection.readFrame(AMQConnection.java:672)
at com.rabbitmq.client.impl.AMQConnection.access$300(AMQConnection.java:48)
at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:599)
… 1 common frames omitted
1.首先找到你安装的rabbitMQ 目录,双击rabbitmq-server.bat 启动MQ,然后
在浏览器输入
http://localhost:15672/
进入本地rabbitMQ管理界面。然后
加一个name是/ 的virtual host
2. 加完之后发现还是报错,在可视化界面中点击queue 然后搜索queue-demo 就是你自己定制的队列名字。
然后手动添加。再启动项目就可以了。
4. postman调用接口失败
This may be the result of an unspecified view, due to default view name generation
发现controller用的是注解@Controller 换成@RestController 就好了
5. redis-cli command not found问题
首先找到服务器上安装redis的目录,如果不知道 可以去问运维
然后进入到bin 目录下
然后 执行 ./redis-cli -h (你的redis ip) -p(你的端口号)
进入之后 然后 auth (你的密码)
就可以进行操作了
6. 使用ControllerAdvice 和 ExceptionHandler 处理全局异常 但是捕获到异常 接口返回的却是404
{
“timestamp”: “2020-05-29T08:36:42.544+0000”,
“status”: 404,
“error”: “Not Found”,
“message”: “/ by zero”,
“path”: “/yancun/demo”
}
因为没有在定制全局异常配置类上面加@ResponseBody注解
或者使用@RestControllerAdvice 不加ResponseBody 效果也是一样的。
@Slf4j
@ControllerAdvice
public class GlobalExceptionConfig extends DefaultHandlerExceptionResolver {
@ResponseBody
@ExceptionHandler(value = Exception.class)
public ResultMessage handle(HttpServletRequest request,Exception ex) {
log.error(" error path: {} | msg: {}",request.getServletPath(),ex);
return ResultMessage.FAIL();
}
}