SpringIntegration 从队列中删除消息而不进行处理

Posted

技术标签:

【中文标题】SpringIntegration 从队列中删除消息而不进行处理【英文标题】:SpringIntegration remove message from the Queue without processing 【发布时间】:2012-12-31 19:25:11 【问题描述】:

我们的应用程序中有一个 JMS 关闭队列,需要在特定事件上使用 Spring 上下文关闭正在运行的节点。

为了正确关闭正在运行的 ApplicationContext 而不会在启动时再次处理此“关闭”消息,我们需要单独杀死 Thread,以确保该消息是在我们杀死 ApplicationContext 之前处理。

有没有办法避免额外杀死线程

例如:配置SpringIntegration流以标记消息已读,在从Queue读取消息后,忽略可能的处理失败。

【问题讨论】:

您的意思是从队列中删除它而不会有事务回滚的风险吗?您可以创建自己的DefaultMessageListenerContainer 实例并将sessionTransacted 设置为falsejms:message-driven-channel-adapter 【参考方案1】:

如果您将终止消息路由到ExecutorChannel(或QueueChannel),该消息将被移交给另一个线程,并且事务将立即提交。

【讨论】:

以上是关于SpringIntegration 从队列中删除消息而不进行处理的主要内容,如果未能解决你的问题,请参考以下文章

怎么从queue队列中获取一定长度的数据

Spring Integration - 并发服务激活器

从 AWS Lambda 读取 SQS 队列

如何从RabbitMQ删除所有队列

redis使用list做消息队列,为啥推送用lpush,而消费用的是brpop

从 RabbitMQ 中删除所有队列?