如何在Rabbit队列上使用同步消息?

编程入门 行业动态 更新时间:2024-10-10 22:23:32

如何在Rabbit<a href=https://www.elefans.com/category/jswz/34/1771257.html style=队列上使用同步消息?"/>

如何在Rabbit队列上使用同步消息?

我有一个node.js函数,需要针对我的应用程序上的每个订单执行该函数。在此函数中,我的应用程序从oracle数据库获取订单号,处理订单,然后在数据库中对该订单号加+1(由于该订单可能失败,因此需要在函数中进行最后处理,因此将不使用该编号)。

如果在时间T(异步)同时处理所有在时间T收到的订单,那么相同的订单号将用于多个订单,我不希望这样。

所以我用兔子试图纠正这种情况,因为这是一个队列。似乎进程按应有的顺序完成,但是第二个进程不等待第一个完成(确认),所以最后我遇到了相同的问题,即多次使用相同的订单号。

无论如何,我是否可以将队列配置为一次处理一封邮件?仅在已确认进程n时才启动进程n + 1?

这对我来说将是救生员!

回答如下:

如果问题是避免重复的订单号,则在插入表中以生成订单号时,请使用Oracle序列或使用标识列:

CREATE TABLE mytab (
       id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY(START WITH 1),
       data VARCHAR2(20));
INSERT INTO mytab (data) VALUES ('abc');
INSERT INTO mytab (data) VALUES ('def');
SELECT * FROM mytab;

这将给:

        ID DATA
---------- --------------------
         1 abc
         2 def

如果问题是您希望顺序处理订单,那么在上一个订单完成之前,请勿从队列中提取订单。这将限制您的吞吐量,因此您需要了解您的要求并做出一些体系结构决策。

总的来说,Oracle Advanced Queuing会很合适。参见node-oracledb documentation on AQ。

更多推荐

如何在Rabbit队列上使用同步消息?

本文发布于:2024-05-07 14:59:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1756805.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:队列   消息   如何在   Rabbit

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!