createSIBJMSQueue 指令

使用 createSIBJMSQueue 指令,為特定範圍的預設傳訊提供者建立新的 JMS 佇列。

如果要執行這個指令,請使用 wsadmin Scripting 用戶端的 AdminTask 物件。

[IBM i][IBM i]從 Qshell 執行 wsadmin Scripting 用戶端

服務整合匯流排指令有指令行說明:
  • 如需 Jython 中可用的服務整合匯流排 JMS 指令清單,以及每個指令的簡要說明,請在 wsadmin 提示下,輸入下列指令:

    print AdminTask.help('SIBJMSAdminCommands')

  • 如需給定指令的概觀說明,請在 wsadmin 提示下,輸入下列指令:

    print AdminTask.help('command_name')

使用指令之後,請利用下列指令,儲存對主要配置所做的變更:

AdminConfig.save()

用途

createSIBJMSQueue 指令會在特定範圍為預設傳訊提供者建立 JMS 佇列。

目標物件

要建立 JMS 佇列的預設傳訊提供者範圍。

必要參數

-name
用來識別這個 JMS 佇列以進行管理的 ID。
-jndiName
用來將佇列連結至應用程式伺服器名稱空間的 JNDI 名稱。
-queueName
JMS 佇列所對映的服務整合匯流排目的地名稱。

選用參數

-description
匯流排的選用說明(基於管理用途)。
-deliveryMode 應用程式 | NonPersistent | 持續性
MessageProducers 針對傳送至此佇列的訊息所使用的遞送模式。
-timeToLive
系統應該保留傳送至此佇列之訊息的預設分派時間長度,其中 0 表示存活時間值不會到期。 如果未提供 存活時間 參數,則會使用來自生產者的值。
-priority
傳送至此佇列的訊息優先順序。 如果未完成,則會使用來自生產者的值。 在 09 範圍內,其中 0 是最低優先順序,而 9 是最高優先順序
-readAhead AsConnection | AlwaysOn | AlwaysOff
用來在訊息遞送期間控制先讀最佳化。 預設值為 AsConnection
-busName
在其上配置服務整合匯流排目的地 (由 queueName所識別) 的服務整合匯流排名稱。 如果未設定,則會使用應用程式所連接的匯流排。
-scopeToLocalQP TRUE | FALSE
指出當使用這個 JMS 佇列來定址時,基礎服務整合匯流排佇列目的地是否以本端佇列點為範圍。 本端佇列點是在 JMS 應用程式所連接的傳訊引擎上配置的佇列點。 當使用這個 JMS 佇列來傳送和接收訊息時,以及當在要求訊息中設定回覆佇列時,這個選項適用。 當在要求訊息中設定回覆佇列時,本端佇列點是在設定回覆佇列的應用程式所連接的傳訊引擎上,而不是在使用回覆佇列的應用程式將回覆訊息送往的傳訊引擎上。 如果連接的傳訊引擎沒有目的地的佇列點,就會忽略這個選項。 預設值為 false

只有當 JMS 應用程式與 WebSphere® Application Server 7.0 或更新版本 伺服器或用戶端一起執行,且連接到在 WebSphere Application Server 7.0 或更新版本 伺服器上執行的傳訊引擎時,才支援變更這個選項的預設值。 在舊版 WebSphere Application Server 上使用會導致應用程式發生異常狀況。

-producerBind TRUE | FALSE
指出 JMS 生產者如何連結至叢集佇列的佇列點。 預設值為 false

只有當 JMS 應用程式與 WebSphere Application Server 7.0 或更新版本 伺服器或用戶端一起執行,且連接到在 WebSphere Application Server 7.0 或更新版本 伺服器上執行的傳訊引擎時,才支援變更這個選項的預設值。 在舊版 WebSphere Application Server 上使用會導致應用程式發生異常狀況。

TRUE
開啟階段作業時,傳訊系統會選取佇列點。 階段作業所產生的所有訊息都會傳送至選擇的佇列點。 當選取佇列點時,傳訊系統會使用 producerPreferLocal 設定。
FALSE
每次傳送訊息時,傳訊系統都會選取一個佇列點,可能會在所有可用的佇列點之間平衡訊息工作量。 當選取佇列點時,傳訊系統會使用 producerPreferLocal 設定。
-producerPreferLocal TRUE | FALSE
指出當傳訊系統選取要產生訊息的佇列點時,是否偏好生產者的本端佇列點,而不是其他可用的佇列點。 本端佇列點是在 JMS 應用程式所連接的傳訊引擎上配置的佇列點。 預設值為 true

只有當 JMS 應用程式與 WebSphere Application Server 7.0 或更新版本 伺服器或用戶端一起執行,且連接到在 WebSphere Application Server 7.0 或更新版本 伺服器上執行的傳訊引擎時,才支援變更這個選項的預設值。 在舊版 WebSphere Application Server 上使用會導致應用程式發生異常狀況。

-consumerGatherMessages TRUE | FALSE
傳訊系統會將 JMS 消費者或瀏覽器附加到服務整合匯流排目的地的單一佇列點。 此參數指出 JMS 消費者或瀏覽器是從服務整合匯流排目的地 (TRUE) 的任何可用佇列點取得訊息,還是從它所連接的單一佇列點取得訊息 (FALSE)。 預設值為 false。 從多個佇列點收集訊息會導致效能成本增加,且無法維護訊息順序。

只有當 JMS 應用程式與 WebSphere Application Server 7.0 或更新版本 伺服器或用戶端一起執行,且連接到在 WebSphere Application Server 7.0 或更新版本 伺服器上執行的傳訊引擎時,才支援變更這個選項的預設值。 在舊版 WebSphere Application Server 上使用會導致應用程式發生異常狀況。

範例

附註: 在下列範例中,以 wsadmin> 開頭的程式碼區塊會顯示使用者所輸入的程式碼。 開頭不是 wsadmin> 的程式行,顯示主控台所傳回的程式碼。
  • 使用 Jython:
    wsadmin>AdminConfig.getid("/Node:9994GKCNode01" )
    
    '9994GKCNode01(cells/9994GKCNode01Cell/nodes/9994GKCNode01|node.xml#Node_1)'
    
    wsadmin>AdminTask.createSIBJMSQueue("WASINSTALL2Node01(cells/WASINSTALL2Cell01/
    nodes/WASINSTALL2Node01|node.xml#Node_1)", ["-name", "jmsq2", "-jndiName",
     "jms/jnmsq2", "-queueName", "busq4jmsq2"])
    
    'jmsq2(cells/9994GKCNode01Cell/nodes/9994GKCNode01|resources.xml
    #J2CAdminObject_1098737234986)'
    
    wsadmin>AdminTask.listSIBJMSQueues("WASINSTALL2Node01(cells/WASINSTALL2Cell01
    /nodes/WASINSTALL2Node01|node.xml#Node_1)")
    
    'queue1(cells/9994GKCNode01Cell/nodes/9994GKCNode01|resources.xml#
    J2CAdminObject_1098711838691)
    jmsq2(cells/9994GKCNode01Cell/nodes/9994GKCNode01|resources.xml#
    J2CAdminObject_1098737234986)'
  • 使用 Jacl:
    wsadmin>$AdminConfig getid /Node:9994GKCNode01
    
    9994GKCNode01(cells/9994GKCNode01Cell/nodes/9994GKCNode01|node.xml#Node_1)
    
    wsadmin>$AdminTask createSIBJMSQueue 
    9994GKCNode01(cells/9994GKCNode01Cell/nodes/9994GKCNode01|node.xml#Node_1)
     {-name jmsq2 -jndiName jms/jnmsq2 -queueName busq4jmsq2}
    
    jmsq2(cells/9994GKCNode01Cell/nodes/9994GKCNode01|resources.xml#
    J2CAdminObject_1098737234986)
    
    wsadmin>$AdminTask listSIBJMSQueues 
    9994GKCNode01(cells/9994GKCNode01Cell/nodes/9994GKCNode01|node.xml#Node_1)
    
    queue1(cells/9994GKCNode01Cell/nodes/9994GKCNode01|resources.xml#
    J2CAdminObject_1098711838691)
    jmsq2(cells/9994GKCNode01Cell/nodes/9994GKCNode01|resources.xml#
    J2CAdminObject_1098737234986)
下列範例顯示如何建立預設傳訊提供者 JMS 佇列,以在開啟階段作業且永不變更時選取佇列點:
  • 使用 Jython:
    wsadmin>AdminTask.createSIBJMSQueue("9994GKCNode01(cells/9994GKCNode01Cell/
    nodes/9994GKCNode01|node.xml#Node_1)", ["-name", "MyJMSQueue", "-jndiName",
     "MyJMSQueue", "-busName bus1", "-queueName", "MyExistingQueue", "-deliveryMode",
     "Application", "-readAhead", "AsConnection", "-producerBind", "TRUE"])
  • 使用 Jacl:
    wsadmin>$AdminTask createSIBJMSQueue 9994GKCNode01(cells/9994GKCNode01Cell/
    nodes/9994GKCNode01|node.xml#Node_1 {-name MyJMSQueue -jndiName MyJMSQueue 
    -busName bus1 -queueName MyExistingQueue -deliveryMode Application 
    -readAhead AsConnection -producerBind TRUE }
下列範例顯示如何建立預設傳訊提供者 JMS 佇列,以在每次傳送訊息時選取佇列點。 沒有選取哪個佇列點的喜好設定,且消費者會從任何佇列點取得訊息:
  • 使用 Jython:
    wsadmin>AdminTask.createSIBJMSQueue("9994GKCNode01(cells/9994GKCNode01Cell/
    nodes/9994GKCNode01|node.xml#Node_1)", ["-name", "MyJMSQueue", "-jndiName",
     "MyJMSQueue", "-busName bus1", "-queueName", "MyExistingQueue", "-deliveryMode",
     "Application", "-readAhead", "AsConnection", "-producerBind", "FALSE",
     "-producerPreferLocal", "FALSE", "-gatherMessages", "TRUE"])
  • 使用 Jacl:
    wsadmin>$AdminTask createSIBJMSQueue 9994GKCNode01(cells/9994GKCNode01Cell/
    nodes/9994GKCNode01|node.xml#Node_1 {-name MyJMSQueue -jndiName MyJMSQueue 
    -busName bus1 -queueName MyExistingQueue -deliveryMode Application 
    -readAhead AsConnection -producerBind FALSE -producerPreferLocal FALSE 
    -gatherMessages TRUE}
下列範例顯示如何建立預設傳訊提供者 JMS 佇列,將它上的所有作業範圍設為 JMS 佇列使用者本端的佇列點:
  • 使用 Jython:
    wsadmin>AdminTask.createSIBJMSQueue("9994GKCNode01(cells/9994GKCNode01Cell/
    nodes/9994GKCNode01|node.xml#Node_1)", ["-name", "MyJMSQueue", "-jndiName",
     "MyJMSQueue", "-busName bus1", "-queueName", "MyExistingQueue", "-deliveryMode",
     "Application", "-readAhead", "AsConnection", "-scopeToLocalQP", "TRUE"])
  • 使用 Jacl:
    wsadmin>$AdminTask createSIBJMSQueue 9994GKCNode01(cells/9994GKCNode01Cell/
    nodes/9994GKCNode01|node.xml#Node_1 {-name MyJMSQueue -jndiName MyJMSQueue 
    -busName bus1 -queueName MyExistingQueue -deliveryMode Application 
    -readAhead AsConnection -scopeToLocalQP TRUE}