当前位置: 首页 > 知识库问答 >
问题:

RabbitMQ:忽略prefetch()会导致数据并发吗?

秦鸿羽
2023-03-14

场景:

我只有一个生产者和消费者,只有一个队列来传输消息。使用者将根据已使用该值的消息更新DB上的值。不应将任何操作并行发送到DB。所以,我们不应该做任何导致数据库上数据并发的事情。我使用预取(1)一次接收一条消息。删除prefetch()是否会导致多个操作并行发送到DB?

共有1个答案

邰建业
2023-03-14

如果不考虑单线程批处理操作的情况,我们首先需要知道是什么导致了并行?多线程消耗。

预取值定义信道或使用者允许的未确认传递的最大数量。

所以预取只影响使用者内存中存储了多少未确认的消息。这不涉及消费。

虽然rabbitmq有很多版本的客户端,但它们都是根据AMPQ协议编写的,所以没有太大区别。

 类似资料:
  • 如果在Java代码中调用,下面的方法将警告,但将忽略Kotlin中的任何警告,因为是已检查的异常。 Java迫使开发人员在抛出异常时采取安全措施,但在Kotlin中,它只是忽略了异常,从而产生了潜在的bug源。我确信有很多类似的情况,检查的异常被忽略了。 问题是如何处理这样的案件?

  • 我遇到了一种奇怪的行为。我的应用程序有一个主要活动,由navdrawer布局和默认列表片段组成。列表片段使用改造客户端获取内容。选择列表项时,将显示详细视图。在小屏幕上,通过单独的活动加载详细信息视图。该活动还使用改装客户端获取详细信息。然后,可以从生成新活动的navdrawer中选择一个选项。该活动也使用改造客户端发送数据。 列表和详细活动很好地调用了改造方法。我可以看到日志和事情正在按预期工作

  • 问题内容: 我正在使用bulk_create将数千或行加载到Postgresql数据库中。不幸的是,某些行导致IntegrityError并停止了bulk_create进程。我想知道是否有一种方法告诉django忽略这些行并尽可能多地保存批处理? 问题答案: 现在可以在Django 2.2上实现 Django 2.2 从文档中为该方法添加了一个新选项: 在支持它的数据库上(除PostgreSQL

  • 问题内容: 我已经来了一段时间,感觉好像logstash中的JSON过滤器正在为我删除数据。我最初是从https://www.digitalocean.com/community/tutorials/how- to-install-elasticsearch-logstash-and-kibana-elk-stack-on- ubuntu-14-04 跟随该教程的 我进行了一些更改,但基本相同。我

  • 问题内容: 为了添加一些基本的错误处理,我想重写一段代码,该代码使用jQuery的$ .getJSON从Flickr中提取一些照片。这样做的原因是$ .getJSON不提供错误处理或不处理超时。 由于$ .getJSON只是$ .ajax的包装,因此我决定重写该内容并感到惊讶,它可以完美地工作。 现在,乐趣开始了。当我故意导致404(通过更改URL)或导致网络超时(由于未连接到互连网)时,错误事件