2015-08-21 37 views
1

一個系統我必須與集成的系統集成包括以下過程:與可能或可能不會回覆

  1. 訂閱了有關從MegaCorp「foo」的消息。 (如提供的回調方法訂閱其用於 通知的一部分。)
  2. 通過回調方法
  3. 約「foo」的消息退訂等待通知。

但是有些情況下沒有通知。處理這個問題的最好方法是什麼?我懷疑有這樣的EIP,但我沒有設法找到一個。

到位,我們有這種方法包括使用Apache的駱駝如下:

A線

  • 訂閱關於 「foo」 的消息。 請求通知發送到路由B.
  • 發送AddSubscription至路線D.

B線(快樂路徑 - 收到通知)

  • 如果我們收到通知,然後做對數據有用的東西。
  • 寄ReceivedNotification至路線d

路線C(定時器)

  • 這將字符串發送到路由d每X秒,以確保我們週期性地從訂閱
退訂

路線D(Unsubscriber)

if (payload instanceOf AddSubscription) 
    // Add to ListofSubscriptions with an expiry time 
elseif (payload instanceOf ReceivedNotification) 
    // Remove from ListOfSubscriptions 
    // Unsubscribe 
elseif (payload instanceOf String) 
    // Remove expired subscriptions from ListOfSubscriptions 
    // Unsubscribe 
    // Note that we didn't receive a notification 
+0

我有點困惑。你訂閱,然後期待一個單一的消息,並再次取消訂閱(=「快樂的路徑」)?我建議訪客模式,以避免if-elseif-elseif ... – Fildor

+0

是的,這就是API的工作原理。還有其他用例,您可以持續訂閱更新,以便長時間保持訂閱。感謝訪問者模式提示。 –

回答

0

聽起來像你可以使用Aggregator EIP。您可以將最初的訂閱交換與通知關聯起來。有一個completionTimeout選項。

相關問題