2011-05-16 53 views
0

現狀合併Java應用程序:2個兩者連接到遠程服務和發送一些數據有java小應用程序(第一應用程序監聽本地套接字,處理數據,將其發送用於驗證遠程服務和過程響應;第二個應用程序在預定時間開始,爲數據庫處理一些數據並將數據發送到遠程服務)。問題是遠程服務只允許一個連接(該連接是SMPP會話),這意味着如果一個應用程序正在運行並且其他應用程序啓動並儘量使連接,那麼不好的事情會發生......策略一個

的想法是結合在1 2個應用程序(也許還有其他的解決方法嗎?),並創建某種控制工作流功能,其職責是管理AP避免連接遠程服務時發生衝突。 有人可以給我關於這個想法的任何建議嗎?也許有某種設計模式可以讓我避免一些陷阱,當我將要實現時? (如果有一些開源應用程序管理類似的問題,那麼我可以瀏覽源代碼並收集一些好的信息會更好)。

謝謝。

+0

爲什麼不可能每次都請求後連接? – 2011-05-16 08:57:33

+0

應用程序B需要從db中獲取數據併發送(例如)15 sms到smpp服務器,這是否意味着我們需要打開關閉會話15次才能發送這些消息? – artjomka 2011-05-16 09:07:21

+0

我binary_runner同意 - 使用隊列中積累的消息,並在固定的時間速度給他們,這是異步交互通常設計百通... – 2011-05-17 15:36:38

回答

1

裹數據類連同必要的元數據。

將您的應用程序分開線程和而不是發送數據將它們添加到隊列

然後,在另一個線程中,讀取該隊列並將數據從隊列發送到服務

我給一個嘗試的BlockingQueue(http://download.oracle.com/javase/1,5.0/docs/api/java/util/concurrent/BlockingQueue.html)。

1

最明顯的解決辦法是寫將在收集請求排隊,並通過一個送他們一個到遠程服務的簡單反向代理服務器。或者代理可以爲每個請求運行新的服務實例。 http://en.wikipedia.org/wiki/Reverse_proxy