自己个人开发中遇见的问题汇总

  • Post author:
  • Post category:其他


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();
    }

}



版权声明:本文为yancun93原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。