2010-01-20 78 views
3

我在Axis2中設置了一個Web服務,它的任務是獲取一堆XML並將其放入稍後處理的隊列中。我知道可以通過在「Call」實例上創建一個使用「invokeNonBlocking」操作來設置客戶端來異步調用同步Web服務。 (REF http://onjava.com/pub/a/onjava/2005/07/27/axis2.html?page=4在這種情況下哪個更好 - 同步或異步Web服務?

所以,我的問題是,是否有任何優勢,在這種情況下使用異步Web服務?這似乎是多餘的,因爲:1)客戶端不堵塞; 2)服務必須接受和寫入無論XML來排隊,如果它是同步或異步

回答

0

A「同步調用」似乎是恰當的,我同意。

如果來自客戶端的請求是不費時,那麼我沒有看到無論是在使異步調用的好處。根據我對此處所述情況的理解,Web服務將在未來一段時間內針對請求執行「處理」。

如果相反,則請求就需要一個耗時的過程,那麼異步調用會避風港是適當的。

0

反芻一些關於它之後,我在想,服務應該是異步的。原因在於它會將數據寫入隊列的任務放入單獨的線程中,從而減少超時的可能性。它使得這個過程變得更加複雜,但是如果我能避免超時,那就必須完成。

1

在我看來,異步是適當的方法。需要考慮的幾件事:

  1. 您有多個客戶端在任何特定時刻訪問此服務嗎?
  2. 這個過程多久發生一次?

它確實需要實現異步方法更多的努力。但我保證,最終你會對結果感到高興。首先,你不必管理線程。您的主要擔心可能是數據在隊列中的波動(即比賽/死鎖狀況)。