【发布时间】:2015-02-02 19:07:33
【问题描述】:
在我的项目中,我有一个要求,比如不同的方法将 sql 查询推送到 Rabbit 队列(基本上是一个将消息广播到所有队列的交换器)。与生产相比,这些推送到队列的 SQL 查询目前并不是很重要(主要用于报告目的),因此当我在服务器上没有太多负载时,我将在不同的环境(其他一些独立项目)中执行这些查询.
现在让我们进入故事的第二部分,在另一端的独立应用程序中有 2 个消费者,它们使用来自 RabbitMQ(交换)的消息(SQL 查询)。一个消费者始终记录(如查询备份),而其他消费者则在数据库上执行批量更新/插入。
我的问题是什么是实现此用例的好方法,当少数查询可能由于多种原因而失败并且因为它是批处理操作时,整个批处理将回滚而我无法获得那些来自队列的那些已经被消耗掉了。我知道我必须从我的第二个消费者创建的备份中获取它,但是在遇到任何异常后我必须停止第一个消费者,以及从备份日志中获取特定失败查询的好方法是什么(考虑查询不足,我在想对多日志文件使用滚动附加日志)。感谢您耐心理解我的问题,并请提出解决此问题的好方法。
【问题讨论】:
-
请添加更多说明;根本不清楚您要做什么。默认情况下,拒绝的消息(由于失败)将重新排队。
-
@GaryRussell 我不想重新排队失败的消息,我想在遇到问题时暂停消费,我会将邮件发送给相关人员,以便他们手动修复。完成该过程后,我必须再次恢复队列消耗。
-
@prathap 我能有你的联系电话吗?如果可能的话,请拨打 +919959900609 联系我
标签: java jakarta-ee log4j rabbitmq spring-rabbit