当同一项目产生多个Kafka消息时,如何避免数据库死锁?

问题描述 投票:0回答:1

我们有2个不同的Web应用程序。让我们分别命名为A和B。当用户更改对A应用程序中项目的分析时,A应用程序会填充东西并产生kafka消息。

B应用程序中的其余API通过Confluent http接收器连接器使用消息。B应用程序中的其余API调用SQL存储过程,该SQL存储过程通过事务更新记录。

[(经常发生),当用户不断更改对A应用程序中同一项目的分析时-数据库中出现死锁。因为当另一个相同项目的调用到达时,SP仍然可以在记录上运行。

什么是处理此问题的最佳做法?使用当前项目管理一些全局列表(ID)输入SP并在SP完成时将其删除?在数据库上处理?其他建议?

一些相关信息:这些应用程序是ASP .Net Core。存储在负载均衡环境(AWS)中。

感谢任何相关的答案。

谢谢!

我们有2个不同的Web应用程序。让我们将它们分别命名为A和B。当用户更改A应用程序中的项目分析时,A应用程序会填充东西并产生kafka消息。 B应用程序中的其余API会消耗消息...

asp.net-core apache-kafka kafka-consumer-api database-deadlocks confluent-kafka
1个回答
0
投票

请确保始终使用相同的密钥发布同一项目(例如,使用该项目的哈希码)。这样可以确保来自应用程序A的所有请求都将进入同一主题分区。

© www.soinside.com 2019 - 2024. All rights reserved.