2012-08-13 53 views
0

這裏我想在C編程中實現持久性隊列。 在這裏我想保存消息到持久隊列,然後我想發送它們。 如果我的嵌入式設備重新啓動,然後再次啓動,然後我也可以從持久性消息隊列中發送正在等待的消息。在Linux中使用純文本實現持久性消息隊列

任何人都可以有一些想法如何我可以實現這一點,以及它將如何工作?

謝謝

回答

1

將其存儲在某些永久存儲上。

沒有太多的事情要告訴你你提供的信息。

+0

我可以使用一些純文件存儲做這個事情嗎? – user1089679 2012-08-13 11:01:35

+0

@ user1089679你還想使用什麼?當然,如果你需要某種事務邏輯,並且你不想自己實現,你可以獲取一些簡單的數據庫。 – 2012-08-13 11:05:18

+0

C中的數據庫如何在C程序中包含數據庫。我可以用文件做。不是sqllite。 – user1089679 2012-08-13 12:03:43

0

如果您希望它比您必須將數據存儲在硬盤驅動器上持久。我建議使用http://www.sqlite.org/。有很多語言的bindigs。

0

持久性消息是即使代理失敗也不能丟失的消息。

持久隊列能夠將消息寫入磁盤,以便在系統關閉或發生故障時不會丟失消息。

現在,消息可以是持久或非持久,通過持久隊列傳播。

當發件人向代理髮送持久消息時,它會將其路由到收件人隊列,並等待消息寫入持久存儲區,然後再確認傳送給實際發件人。 如果隊列不是持久的,則隊列上的消息不會寫入磁盤。 如果消息不是持久的,即使它位於持久隊列上,也不會寫入磁盤。

當接收者隊列從持久隊列中讀取消息時,它不會從隊列中刪除,直到接收者確認消息。

現在你必須加入日誌記錄機制,以保持磁盤上的消息和代理的狀態記錄。然後你必須按照正確的順序管理消息和日誌的緩存。

這是一個簡單的想法,說明一個持久隊列應該是什麼以及如何寫一個。 持久性隊列被諸如IBM WebSphere,RedHat的MRG等專有軟件系統所使用。引薦他們更多的想法。