簡體   English   中英

Weblogic:使用 WLST 將消息從導出的 xml 文件導入到統一分布式隊列

[英]Weblogic: Import messages to a Uniform Distributed Queue from exported xml file using WLST

我正在嘗試編寫腳本以使用 WLST 將消息導入 Weblogic 中的統一分布式隊列,但我無法找到專門滿足我的要求的解決方案。

讓我解釋一下要求:

我有存儲失敗消息的錯誤隊列。 我已將它們導出為 xml 文件(使用 WLST),並根據消息 header 中的不同錯誤代碼將它們隔離為更小的 xml 文件,這些文件需要導入到主隊列中進行重新處理(不使用管理控制台)。

我確信可以做一些事情來實現這一點,因為我可以使用管理控制台中的導入選項導入隔離的 xml 文件,這就像一個魅力,但不知道它實際上是如何完成的,所以它可以作為腳本實現。

我已經探索了一些選項,例如將文件導出為二進制 SER 文件,該文件可以工作,但它不能僅用於過濾掉可重試的消息。

第一個方法importMessages()只接受復合數據類型數組。 從 xml 文件轉換/創建所需復合數據類型數組的任何方法也將是解決該問題的好方法。

我同意這不是很簡單和直觀。 你有2個解決方案:

  • 純 WLST 代碼
  • java 代碼使用 JMS API

如果您想編寫純 WLST 代碼,這里有一個代碼示例可以幫助您。 該代碼創建 n 條消息並將其發布到隊列中。 buildJMSMessage() function 負責創建文本消息。

from javax.management.openmbean import CompositeData
from weblogic.jms.extensions import JMSMessageInfo, JMSMessageFactoryImpl

...

def buildJMSMessage(text):

    handle = 1
    state = 1
    XidString = None
    sequenceNumber = 1
    consumerID = None
    wlmessage = JMSMessageFactoryImpl.getFactory().createTextMessage(text)

    destinationName = ""
    bodyIncluded = True
    msg = JMSMessageInfo(handle, state, XidString, sequenceNumber, consumerID, wlmessage, destinationName, bodyIncluded)

    return msg



....

quanity = 10
messages = jarray.zeros(quantity,CompositeData)

for i in range(0,quantity):
    messages[i] = buildJMSMessage('Test message #'+str(i)).toCompositeData()
    i = i + 1

queue.importMessages(messages, False)

    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM