我们正在使用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一起正常工作?或者也许有不同的方法可以让我优先考虑我的命令?