将PriorityQueue与Hystrix结合使用

时间:2016-09-15 06:50:33

标签: java concurrency priority-queue hystrix

我们正在使用Hystrix来调用远程API,我们希望使用PriorityBlockingQueue重放默认Hystrix并发策略提供的标准LinkedBlockingQueue。

我能够替换默认的HystrixConcurrencyStrategy并执行此操作。

public class CustomConcurrencyStrategy extends HystrixConcurrencyStrategy {

    public BlockingQueue<Runnable> getBlockingQueue(int maxQueueSize) {
        return (BlockingQueue)(maxQueueSize <= 0?new SynchronousQueue(): new PriorityBlockingQueue(maxQueueSize));
}

HystrixPlugins.getInstance().registerConcurrencyStrategy(customConcurrencyStrategy);

优先级队列需要可比对象。我可以在我的命令类中实现这个接口,但不幸的是Hystrix用很多其他对象包装我的命令对象。一些包装对象是匿名内部类,因此即使使用反射也很难提取命令对象。

任何人都知道如何让Hystrix与PriorityBlockingQueue一起正常工作?或者也许有不同的方法可以让我优先考虑我的命令?

0 个答案:

没有答案