当前,我在集成流程中使用队列通道,但是它使用FIFO提取方式。有没有办法将其更改为LIFO?

另外,有没有一种方法可以基于属性从队列中删除消息?

我怀疑我需要使用PriorityChannel从FIFO切换到LIFO,但是我不知道如何实现。

@Bean
    fun notificationChannel(): MessageChannel {
        return MessageChannels.queue().get()
    }

例如,我的QueueChannel将充满包含userId的消息。因为我只对userId消息的最新状态感兴趣,所以我想使用LIFO并删除所有具有与最新消息相同的userId的消息。

最佳答案

听起来您好像并不是真的想要LIFO,而是只想要最新的给定条件。

但是,不管怎么说,Queue是一个非常简单的接口(interface)。它只有几种方法,QueueChannel仅使用poll()offer()size()

因此,创建自定义队列应该很简单,例如基于线程安全的ConcurrentHashMap<String, Message<?>>,密钥为您的条件。

09-30 17:14