排序服务总线队列消息

Sorting Service Bus Queue Messages

我想知道是否有一种方法可以将元数据或什至多个元数据实现到服务总线队列消息中,以便稍后在应用程序中使用以进行排序但仍保持队列中的 FIFO。

所以简而言之,我想做的是: 维护 Fifo,即队列中的先进先出结构,但是随着消息从不同的源进入并插入到队列中,我希望能够使用例如元数据对消息来自哪个源进行排序。

我知道这可以通过主题在消息中插入 属性,但我不确定是否可以在主题消息中实现多个属性。

希望我能清楚地说明我所问的是可能的。

我假设您使用 .NET API。如果是这种情况,您可以使用 Properties 字典来写入和读取您的自定义元数据:

BrokeredMessage message = new BrokeredMessage(body);
message.Properties.Add("Source", mySource);

您也可以自由添加多个属性。这对于队列和 Topics/Subscriptions.

都是一样的

i was wondering if there is a way to implement metadata or even multiple metadata to a service bus queue message to be used later on in an application to sort on but still maintaining FIFO in the queue.

要在队列中保持 FIFO,您必须使用 Message Sessions。如果没有消息会话,您将无法 能够在队列本身中维护 FIFO。您可以设置自定义 属性 并在您的应用程序中使用它,并在收到乱序的消​​息后对消息进行分类,但您不会像原始问题中所问的那样以 FIFO 顺序接收消息。

如果您放弃在队列中保留订单的要求,@Mikhail 提供的答案将适用于基于自定义 属性(s) 的进程内排序。请注意,进程内排序不是一项简单的任务。