由于公司的政策,我们(我的小团队)过去不能使用队列管理器(唯一允许的是Websphere MQ,但没有预算)。我们已经使用数据库实现了队列。我们的应用程序以数据库为中心,在.NET中实现。
最近这一点已经改变了-我们可以使用ActiveMQ或Rabbit。我们已经开始考虑迁移队列,但还没有决定使用哪个队列。
它似乎不像最初看起来那么简单。
当我们使用业务密钥检查消息是否在队列中以避免重复时,很少有场景。例如:当不耐烦的用户发送信用卡申请两次(发送按钮点击两次),因为他还没有看到状态变化。我们负责后端,我们无法控制客户端应用程序。
当前的实现是:如果该用户在最近一小时内请求获取信用卡,则获取用户名并在队列中搜索。
在数据库中搜索很容易。若找到匹配项,则引发异常,而不是将消息放入队列中。
我仍然不知道如何使用队列管理器执行此操作,我找不到有关此操作的任何信息。我只找到了一些关于使用消息id的信息,但在我们的例子中,重复的消息将有不同的信息。
是否可以使用一些业务数据检查消息是否已经在队列中?