扇出傳輸參考
使用 ActiveMQ Classic > 設定傳輸 > ActiveMQ Classic 連線 URI > 扇出傳輸參考
扇出傳輸
扇出傳輸在任何其他傳輸之上層疊了重新連線和複寫邏輯。它利用探索傳輸來探索代理程式,並將命令複寫到這些代理程式。
組態語法
fanout:(discoveryURI)?transportOptions
或
fanout:discoveryURI
傳輸選項
選項名稱 | 預設值 | 說明 |
---|---|---|
initialReconnectDelay | 10 | 第一次嘗試重新連線前等待的時間長度 |
maxReconnectDelay | 30000 | 我們在重新連線嘗試之間等待的最長時間 |
useExponentialBackOff | true | 是否在重新連線嘗試之間使用指數退避 |
backOffMultiplier | 2 | 指數退避嘗試中使用的指數 |
maxReconnectAttempts | 0 | 如果不是 0,則這是將錯誤傳回用戶端之前重新連線嘗試的最大次數 |
fanOutQueues | false | 如果設定為「true」,則命令也會複寫到佇列以及主題 |
minAckCount | 2 | 必須建立連線的最小代理程式數量 |
「fanOutQueues」選項是扇出傳輸特有的。預設情況下,扇出不會將命令複寫到佇列;僅複寫到主題。因此,如果您想將訊息傳送命令扇出到多個代理程式上的多個佇列,您必須將此選項設定為「true」。
預設情況下,用戶端的扇出傳輸會等待建立與 2 個代理程式或所設定的靜態 TCP URI 數量的連線(如果超過 2 個)。在建立此數量的連線之前,用戶端對 Connection.createSession() 的呼叫不會傳回。例如,使用下面列出的扇出連接器的生產者將等待直到 2 個代理程式正在運行,並建立與這兩個代理程式的連線。
fanout:(multicast://default)
另一個範例是使用以下扇出連接器的生產者。
fanout:(static:(tcp://127.0.0.1:61629,tcp://127.0.0.1:61639,tcp://127.0.0.1:61649))
在這種情況下,需要三個代理程式連線。但是,可以使用 minAckCount 傳輸選項覆寫此所需的連線數量。例如,此扇出連接器允許生產者在僅連線到一個代理程式後即可執行。
fanout:(multicast://default)?minAckCount=1
警告
不建議您將扇出 URI 用於消費者。此外,如果生產者跨越多個代理程式進行扇出,而這些代理程式碰巧是互連的,那麼其中一個代理程式上的消費者很有可能會收到重複訊息。
範例 URI
fanout:(static:(tcp://127.0.0.1:61616,tcp://remotehost:61616))?initialReconnectDelay=100
將參數套用至探索到的傳輸
由於探索傳輸用於代理程式探索,因此傳輸參數會套用至探索到的代理程式。請參閱探索傳輸參考。