連線組態 URI
使用 ActiveMQ Classic > 設定傳輸 > ActiveMQ Classic 連線 URI > 連線組態 URI
連線組態 URI
可以透過在 ActiveMQConnection 或 ActiveMQConnectionFactory 物件上明確設定屬性(透過 bean 屬性)或使用以下 URI 語法來設定 Apache ActiveMQ Classic 連線。
範例
您可以在一般連線 URI 上設定名為 jms.$PROPERTY
的屬性。例如,您可以將 ActiveMQConnectionFactory 上的 brokerURL
設定為以下值,以啟用 非同步傳送
tcp://127.0.0.1:61616?jms.useAsyncSend=true
連線選項
使用正確的前綴!
以下選項在
brokerURL
或代理的傳輸連接器上使用時,應加上jms.
前綴。
選項名稱 | 預設值 | 描述 |
---|---|---|
alwaysSessionAsync |
true |
當 true 時,會使用一個單獨的執行緒來分派連線中每個 Session 的訊息。當有多個 session 時,或 session 不在 Session.AUTO_ACKNOWLEDGE 或 Session.DUPS_OK_ACKNOWLEDGE 模式時,總是會使用單獨的執行緒。 |
alwaysSyncSend |
false |
當 true 時,即使傳遞模式不需要,MessageProducer 在傳送訊息時也將始終使用同步傳送。 |
auditDepth |
2048 |
將被審核以檢查重複和亂序訊息的訊息視窗大小。 |
auditMaximumProducerNumber |
64 |
將被審核的生產者最大數量。 |
checkForDuplicates |
true |
當 true 時,消費者將檢查重複的訊息,並正確處理訊息,以確保不會意外處理兩次。 |
clientID |
null |
設定連線要使用的 JMS clientID。 |
closeTimeout |
15000 |
設定在關閉被認為完成之前的逾時時間(以毫秒為單位)。通常,連線上的 close() 會等待代理的確認。這允許關閉操作逾時,防止客戶端在沒有可用的代理時掛起。 |
consumerExpiryCheckEnabled |
true |
控制是否在分派訊息之前,在每個 MessageConsumer 中執行訊息到期檢查。停用此檢查可能會導致過期訊息的消耗。(自 5.11 版起)。 |
copyMessageOnSend |
true |
是否應在 JMS 中作為 send() 方法的一部分,將 JMS 訊息複製到新的 JMS 訊息物件。預設情況下啟用此選項,以符合 JMS 規範。如果傳送後不變更 JMS 訊息,請設定為 false 以提高效能。 |
disableTimeStampsByDefault |
false |
設定是否應該停用訊息上的時間戳記。設定為 false 可以略微提升效能。 |
dispatchAsync |
false |
代理是否應將訊息非同步分派到消費者? |
nestedMapAndListEnabled |
true |
控制是否支援結構化訊息屬性和 MapMessages,以便訊息屬性和 MapMessage 條目可以包含巢狀的 Map 和 List 物件。自 4.1 版起可用。 |
objectMessageSerializationDefered |
false |
當在 ObjectMessage 上設定物件時,JMS 規範要求該物件由該設定方法序列化。當 true 時,該物件將不會被序列化。如果訊息需要通過 Socket 傳送或儲存到磁碟,則該物件可能會隨後被序列化。 |
optimizeAcknowledge |
false |
啟用最佳化的確認模式,其中訊息是以批次而不是單獨確認的。或者,您可以為消費者使用 Session.DUPS_OK_ACKNOWLEDGE 確認模式,這通常會更快。警告:啟用此問題可能會導致在重新連線時自動確認出現一些問題。 |
optimizeAcknowledgeTimeOut |
300 |
如果 > 0,則指定當啟用 optimizeAcknowledge 時,批次確認之間的最大時間(以毫秒為單位)。(自 5.6 版起)。 |
optimizedAckScheduledAckInterval |
0 |
如果 > 0,則指定一個時間間隔,在此間隔內,當使用最佳化確認時,將傳遞所有未完成的 ACK,以便長時間運行的消費者在沒有收到更多訊息的情況下,最終會 ACK 最後幾個未 ACK 的訊息(自 5.7 版起)。 |
optimizedMessageDispatch |
true |
如果 true ,則使用較大的預取限制 - 僅適用於持久性主題訂閱者。 |
useAsyncSend |
false |
強制使用非同步傳送,這會大幅提升效能;但這意味著無論訊息是否已傳送,send() 方法都會立即返回,這可能會導致訊息遺失。 |
useCompression |
false |
啟用訊息主體的壓縮。 |
useRetroactiveConsumer |
false |
設定是否啟用追溯消費者。追溯消費者允許非持久性主題訂閱者接收在非持久性訂閱者啟動之前發布的舊訊息。 |
warnAboutUnstartedConnectionTimeout |
500 |
從連線建立到產生警告的時間(以毫秒為單位),如果連線未通過 Connection.start() 正確啟動並且消費者收到訊息。忘記啟動連線,然後想知道為什麼沒有傳遞訊息是一個非常常見的陷阱,因此此選項將預設情況設定為,如果使用者忘記則建立警告。要停用警告,只需將值設定為 < 0 。 |
nonBlockingRedelivery |
false |
訊息重新傳遞(以及任何相關延遲)是否會阻止其他訊息的傳遞。設定為 true 將允許訊息亂序傳遞。 |
巢狀選項
您也可以使用給定的前綴在連線物件上設定巢狀物件。請參閱 javadoc 以了解每個單獨屬性的詳細資訊。
選項名稱 | 設定的物件 | 另請參閱 |
---|---|---|
jms.blobTransferPolicy.* |
BlobTransferPolicy | Blob 訊息 |
jms.prefetchPolicy.* |
ActiveMQPrefetchPolicy | 預取限制的用途是什麼? |
jms.redeliveryPolicy.* |
RedeliveryPolicy | 重新傳遞策略 |
例如,您可以設定
tcp://127.0.0.1:61616?jms.prefetchPolicy.all=100&jms.redeliveryPolicy.maximumRedeliveries=5