记录排查问题过程和解决方案也算是总结排查问题方法。
- 需求:
用户基本信息修改成功之后,需要同步修改的用户信息给别的服务,同步其冗余的用户信息。 - 设计思路
修改完成用户信息数据库已经结束操作确保已经写入数据库之后发送更新后的用户信息。
发送消息操作单独启动一个线程发送,统一使用一个线程池管理。 - MQ
选用RabbitMQ,服务内使用CachingConnectionFactory创建和维护MQ
连接,统一使用RabbitTemplate发送消息。 - 踩坑:
- 单元测试发送MQ出错
单元测试,修改完成信息,正常写入数据库,正常进去MQ发送逻辑,到达发送逻辑时抛出异常,截取关键错误信息
Caused by: java.io.IOException: null
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:126)
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:122)
at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:144)
at com.rabbitmq.client.impl.ChannelN.open(ChannelN.java:133)
at com.rabbitmq.client.impl.ChannelManager.createChannel(ChannelManager.java:176)
at com.rabbitmq.client.impl.AMQConnection.createChannel(AMQConnection.java:553)
at org.springframework.amqp.rabbit.connection.SimpleConnection.createChannel(SimpleConnection.java:57)
..