![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
wwdwjm
这个作者很懒,什么都没留下…
展开
-
异步命令组件
这里写自定义目录标题前言使用demo异步命令组件核心功能使用逻辑使用场景一使用场景二使用场景三使用场景四使用场景五使用场景。。。欢迎补充快速使用注意点如何保证高可用详细配置项模型三种调度方式性能和调优默认配置性能测试调优github地址 https://github.com/bojiw/asyncmd码云地址https://gitee.com/wangwendi/asyncmd前言以前有幸...原创 2019-08-01 20:00:49 · 316 阅读 · 0 评论 -
rabbitmq保证消息可靠 消息不丢失
三端可靠发送方和mq保证消息送达到mqmq保证保存的消息不丢失消费方和mq一起保证消息被成功消费发送方和mq保证消息送达到mq方案一、rabbitmq如果是用spring boot提供的模版接口发送 需要调用rabbitTemplate.convertSendAndReceive()方法发送 这个是当消息成功到队列了才会返回结果 如果失败则会抛异常 不过这就会导致等待时间比较长 适合...原创 2019-08-14 16:45:41 · 1014 阅读 · 0 评论 -
mq如何通过异步命令组件做到顺序消费
场景当有一个业务需要监听订单创建和订单修改的消息 正常消费顺序肯定是需要先消费订单创建的消息 再消费订单修改的消息 不过也可能因为网络和mq投递速度的关系 导致订单修改的消息先发送到消费方 这就导致顺序乱了异步命令组件如何做到顺序消费https://github.com/bojiw/asyncmd收到订单创建的消息把消息内容放到异步命令对象中先保存到表中 然后返回给mq已经成功处理...原创 2019-08-14 20:38:25 · 493 阅读 · 0 评论 -
ThreadPoolExecutor线程池源码解读keepAliveTime 空闲过期时间作用
keepAliveTime参数主要是把除了核心线程 其他线程当超过等待时间keepAliveTime 就会进行线程移除接下来主要讲下线程是如何创建 执行 然后操作等待时间是如何移除的 先介绍两个线程池的核心参数HashSet workers工作类集合Worker这个其实就是保存在线程池里的线程 实现了Runnable接口 当线程池中开启10个线程 就会创建10个Worker类 这些wor...原创 2019-08-16 13:04:08 · 2399 阅读 · 0 评论 -
那些年我们踩过的坑-BigDecimal精度丢失的问题
一般java需要对有小数点数字进行计算的时候都是推荐使用BigDecimal因为用这个来计算不会出现精度丢失的问题 可是如果使用不当 BigDecimal其实也会有精度丢失的风险下面的代码打印出来的结果可以猜猜是多少BigDecimal decimal = new BigDecimal(122.11);System.out.println(decimal.toString());//打印...原创 2019-08-21 21:00:05 · 1136 阅读 · 0 评论 -
那些年我们踩过的坑-ConcurrentLinkedQueue.size慢
ConcurrentLinkedQueue作为队列 有时候需要调用size方法 看下 队列中是否有数据 可当这个队列大小比较大的时候发现size方法执行比较慢 可以看下一下源码public int size() { int count = 0; for (Node<E> p = first(); p != null; p = succ(p)) if (...原创 2019-08-22 20:20:38 · 1201 阅读 · 0 评论 -
那些年我们踩过的坑-线程池核心线程数也有可能销毁重新创建
这个坑我在我另一篇文章里提过 不过感觉挺重要的 所以单独列出来https://blog.csdn.net/wwdwjm/article/details/99672803一般我们都知道线程池初始化的时候会设置核心线程数CorePoolSize 这个数量代表着我们把要执行的线程丢入到线程池中的工作线程执行 如果当前工作线程数小于等于核心线程数 执行完以后不会把这个工作线程销毁 而是一直等待 除非线...原创 2019-08-26 21:06:10 · 6573 阅读 · 0 评论