目前,我在集成流中使用隊列通道,但它使用 FIFO 提取方式。有沒有辦法將其更改為后進先出?另外,有沒有辦法根據屬性從隊列中刪除消息?我懷疑我需要使用PriorityChannel從FIFO切換到LIFO,但我不知道如何完成。@Bean fun notificationChannel(): MessageChannel { return MessageChannels.queue().get() }例如,我的隊列通道將填充包含 userId 的消息。由于我只對 userId 消息的最新狀態感興趣,因此我想使用 LIFO 并刪除與最新消息具有相同 userId 的所有消息。
2 回答

慕森卡
TA貢獻1806條經驗 獲得超8個贊
聽起來你并不是真的想要LIFO,你只是想要給定條件的最新信息。
但是,無論如何,這是一個非常簡單的界面;它只有少數幾個方法和唯一的用途,和 。Queue
QueueChannel
poll()
offer()
size()
因此,創建自定義隊列應該很簡單,例如,基于線程安全,密鑰是您的條件。ConcurrentHashMap<String, Message<?>>

largeQ
TA貢獻2039條經驗 獲得超8個贊
隊列通道將隊列作為構造函數參數,彈簧集成 DSL 提供 。因此,您可以使用上述工廠方法作為參數來獲得所需的行為。public QueueChannel(Queue<Message<?>> queue)
public static QueueChannelSpec queue(Queue<Message<?>> queue)
Collections.asLifoQueue(..)
添加回答
舉報
0/150
提交
取消