对服务总线队列消息进行排序

时间:2017-11-12 19:37:48

标签: queue metadata azureservicebus azure-servicebus-topics

我想知道是否有办法将元数据甚至多个元数据实现到服务总线队列消息,以便稍后在应用程序中使用以进行排序,但仍然在队列中维护FIFO。

简而言之,我想做的是: 维护Fifo,即队列中的First Out First结构,但是当消息来自不同的源并从队列插入到队列时,我希望能够从消息来自哪个源进行排序,例如元数据。

我知道可以使用可以在消息中插入属性的主题,但我也不确定是否可以在主题消息中实现多个属性。

希望我能够清楚地知道我所要求的是什么。

2 个答案:

答案 0 :(得分:2)

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

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

您也可以自由添加多个属性。对于队列和主题/订阅,这都是相同的。

答案 1 :(得分:0)

  

我想知道是否有办法将元数据甚至多个元数据实现到服务总线队列消息,以便稍后在应用程序中使用以进行排序,但仍然在队列中维护FIFO。

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

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