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

Azure Service Bus消息有序处理

胡星汉
2023-03-14

如果对于Azure服务总线主题,则存在带有某个筛选器的单个订阅。有一个微服务a为订阅创建了SubscriptionClient,并发度为1,用于读取消息。此外,如果存在该服务A的2个这样的副本,并且比方说,在t1、t2和t3时间插入到主题的unpartitioned服务总线主题中有3条消息。

T1

注意:与kafka相比,它确保一个分区的消息只传递给一个副本和一个侦听该分区的线程,从而保证了消息的有序处理。但不确定W.R.T服务总线主题,如Azure服务总线,如果多个副本使用不同的subscriptionClients侦听相同的订阅,它们是否可以接收/处理顺序混乱的消息?


共有1个答案

尹英华
2023-03-14

如果您想要使用Azure服务总线启用有序消息处理,那么就必须使用会话。

您可以使用消息的sessionid作为Kafka中可能使用的partitionId的等价物。通过这种方式,您仍然可以扩展您的使用者,但在任何给定时间都要受到不同的sessionid值的数量的限制。

消息会话。实现需要消息排序或消息延迟的工作流。

分区意味着已分区实体的总体吞吐量不再受单个消息代理或消息传递存储的性能限制。此外,消息存储的临时中断不会使分区队列或主题不可用。

 类似资料:
  • 在下面的示例中,我有两个正在处理来自kafka的消息的服务实例,但我希望确保只在之后处理。 显然,通过将一个实例配置为仅从特定分区消费,可以很容易地解决这种情况,该分区将存储带有公共标识符的消息: 现在顺序得到了保证,将永远不会在之前处理。 但是,我在想这个问题是否可以用另一种方式来解决,直接在代码中而不是依赖基础设施?这看起来可能是微服务架构中的一个标准问题,但我不确定哪种方法是解决它的首选方法

  • 我正在使用netty构建一个应用程序。在应用程序中,我需要处理传入和传出的消息。要求是应用程序将发送的任何消息都应由特定的处理程序处理,进入应用程序的任何消息都应由另一个特定的处理程序处理。但是,我希望在两个处理程序之间交换消息,以便能够跟踪发送的消息响应,因为请求消息也将发送到应用程序。 请任何想法hwo实施这样的要求。这个问题听起来可能不相关,但这就是我得到的,我还不是一个网络极客。我读到的关

  • 前言 在封装创建request的时候会调用handleProduceResponse(),这个里面会调用 有异常并且可以重试,执行第一个分支,会调用 有异常但是不可以重试,执行第二个分支,会调用

  • 版本 维特。x核心:3.5.0 vert. x redis客户端:3.5.0 上下文 2018-06-02 17:40:55.981错误4933---[ntlop-thread-2]io.vertx.redis.impl.重新连接:没有处理程序等待消息:14751915 2018-06-02 17:41:10.937错误4933---[ntloop-thread-2]io。维特斯。雷迪斯。impl

  • 我每个websocket接收几十条消息,这些消息可能只差几毫秒就能到达。我需要用操作来处理这些数据,这些操作有时会花费一些时间(例如,在DB中的插入)。为了处理接收到的新消息,必须完成对前一个消息的处理。 我的第一个想法是用Node.js Bull(用Redis)准备一个队列,但恐怕太长了,无法运行。这些消息的处理必须保持快速。 我尝试使用JS迭代器/生成器(直到现在我还从未使用过),我测试了如下

  • 在FLTK中是通过Fl_Widegt::handle(),虚拟函数来处理系统的消息。我们可以查看Fltk的源代码来分析系统是怎样处理一些系统消息的,如按钮的消息处理 /******************************************************* Fl_Button中处理消息的代码,省略了具体的处理代码 *******************************