2010-09-08 97 views
0

我打算使用AMQP允許分佈式機器集合異步報告中央位置。這個想法是將消息放入隊列中,並允許中央日誌記錄實體以解耦方式處理隊列; '流程'只是創建或更新數據庫表中的一行。在AMQP中實現消息優先級

我期望的問題是消息排隊過程中網絡抖動的影響 - 如果update意外地位於insert的前面,會發生什麼情況,因爲發出的兩條消息之間的時間小於網絡抖動?

閱讀AMQP規範,似乎我可以將更高的優先級應用於insert s,因此他們跳過隊列並首先處理。但大概這隻適用於在代理中實際存在的隊列被跳過的情況。是否有辦法在代理人處施加緩衝或延遲來吸收這種抖動,並在消息傳遞給消費者之前允許優先級制定?

或者我是否必須走下去測序器的路線as ActiveMQ suggests

回答

3

多個發佈者之間缺乏排序與網絡抖動無關,這在分佈式應用程序中是完全自然的事情。來自同一個發佈者的消息將始終被訂購。如果您確實需要由不同節點執行的操作的因果排序,則可以使用再編程器或全局序列編號方案作爲唯一選項。請注意,你不能使用發件人時間戳爲此,這是每個人似乎首先嚐試..

+0

謝謝Holger。當你說「來自同一個發佈者的消息總是被訂購的」 - 這是否依賴於AMQP的實施? – Matt 2010-09-17 12:17:23

+0

我認爲這是規範的一部分 - 其他任何事情都會令人驚訝。應該很容易找到。 – 2010-09-17 18:00:30