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

兔子。net核心客户端以并行方式处理多条消息(而不是逐个处理)

华宣
2023-03-14

假设我有一个出版商和两个消费者。每个消费者应该一次消费5条消息(并行)。

(一个交换,绑定到一个队列,直接模式)

  • 发布者产生消息(1,2,3,...14,15)
  • 消费者A消费(1,3,5,7,9)
  • 消费者B消费(2,4,6,8,10)
  • 消费者A处理完消息1并接收消息11
  • ...等

我怎样才能做到这一点?我意识到,消费者。接收事件仅在处理上一条消息时触发。

阅读rabbitmq文档时,这似乎正是我需要的:https://www.rabbitmq.com/consumer-prefetch.html

但显然,该设置对上述行为没有影响(消息仍然是串行处理的)。

有什么想法吗?

共有1个答案

沃瑾瑜
2023-03-14

设置预取,消息仍然被串行处理

因为每个通道的消息都是串行处理的。所以你有两个选择:

  1. 在单个通道上使用,并生成多个任务线程来处理消息
  2. 打开多个使用者通道,并在该通道线程中处理消息
 类似资料:
  • 最大消息长度为64K字节(尽管我可以将其减少到256字节)。 注意:这将运行在一个微小的嵌入式设备上,所以使用像ZMQ这样的消息传递层不是一个选项(没有足够的内存)。 我可以:

  • 我正在尝试使用spring integration设置我的应用程序,作为一名新手,需要以下用例的建议- 有一个队列,来自另一个应用程序的消息将被推送到该队列。我的应用程序使用队列中的消息,进行一些数据处理,然后将其推送到另一个出站队列。目标是以并发方式处理消息。 根据我的理解,我们可以有两种方法- 1.使用#轮询器 2.使用#调度器 从基于轮询器的配置来看,池中似乎有多个可用线程,可以同时获取消息

  • 问题内容: 我知道,现在大多数处理器都有两个或多个内核,因此多核编程非常流行。有在Java中利用此功能的功能吗?我知道Java有一个Thread类,但是我也知道这是在多核流行之前的很长时间了。如果我可以使用Java中的多个内核,我将使用什么类/技术? 问题答案: Java是否支持多核处理器/并行处理? 是。它还是其他编程语言的平台,在该平台上,实现增加了“真正的多线程”或“真正的线程”卖点。在较新

  • 想知道Kafka使用者(Java客户端)是否可以并行读取和处理多条消息...我的意思是使用多个线程...我应该使用rxJava吗?? 1)这样做是一个好的方法吗???2)而且根据我的理解,Kafka甚至把每一个线程都当作消费者...如果我错了,请纠正我... 3)并且还想让Java客户端作为守护进程服务在Linux中运行,这样它就可以连续运行,并且轮询Kafka的消息,读取和处理都是一样的...这

  • 我们使用Vertx 3.0.0。 情况: 我们有一个带Rest处理器的主垂直面。 REST处理程序通过事件总线调用worker,如下所示: 我们有工人垂直,这就是我们执行垂直的方式: 这里是Worker实现: 如果我多次请求REST服务,那么所有消息都会在Worker中按顺序处理。为什么多线程在这里不起作用?worker多线程选项的目的是什么(文档中不清楚它到底是如何工作的)? 顺便说一句,如果我