与可能会或不会回复

时间:2015-08-21 10:37:56

标签: java apache-camel

我必须整合的一个系统涉及以下过程:

  1. 从MegaCorp订阅有关“foo”的消息。 (作为订阅的一部分,提供了用于的回调方法 通知。)
  2. 通过回调方式等待通知
  3. 取消订阅有关“foo”的消息。
  4. 但是,有些情况下没有通知。处理这个问题的最佳方法是什么?我怀疑有一个EIP,但我没有找到一个。

    我们采用的方法涉及使用Apache Camel,如下所示:

    路线A

    • 订阅有关“foo”的消息。 请求将通知发送到路线B.
    • 向路线D发送AddSubscription。

    路线B (快乐路径 - 收到通知)

    • 如果我们收到通知,请对数据执行一些有用的操作。
    • 向Route D发送ReceivedNotification

    路线C (计时器)

    • 每隔X秒向路由D发送一个字符串,以确保我们定期取消订阅“订阅”

    路线D (取消订阅者)

    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
    

1 个答案:

答案 0 :(得分:0)

听起来你可以使用Aggregator EIP。您可以将初始订阅交换与通知相关联。有一个completionTimeout选项。