Как получить UUID брокера, имя хоста, из кода ESQL, работающего на IBM IIB 10+? - PullRequest
0 голосов
/ 03 декабря 2018

Как мы можем получить UUID брокера, имя хоста, из кода ESQL, работающего на IBM IIB, версия 10 +?

(я мог получить имя брокера:

https://www.ibm.com/support/knowledgecenter/en/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ak09512_.htm

но, похоже, я не вижу доступа к UUID брокера, имени хоста из кода ESQL, работающего на движке IBM IIB.)

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Так что, когда дело доходит до ESQL, вы не можете его получить.Это раздражало меня годами, я имею в виду, зачем это скрывать.

Если вам разрешено использовать узлы Java , то вы можете получить его, вызвав метод getUUID из BrokerProxy.

BrokerProxy b = BrokerProxy.getLocalInstance("MYBROKER");
String b_uuid = b.getUUID();

Если нет, то вы можете :

  • Использовать mqsireportbroker для определения UUID
  • С помощью консоли Webadmin добавить определение настраиваемой службы UserDefined Service,Давайте назовем его BrokerUUID со свойством UUID и значением, которое вы получили от mqsireportbroker.Они прячутся в разделе «Операционная политика»
  • . Вызовите API-интерфейс IBM Integration RESTful / apiv1 / policy / configurableservices / UserDefined / BrokerUUID, используя узел HTTPRequest или RESTRequest.
  • RESTful API в настоящее время находится по адресу https://www.ibm.com/support/knowledgecenter/en/SSMKHH_10.0.0/com.ibm.etools.mft.restapi.doc/path__policy_configurableservices_-configurableServiceType-_-configurableServicename-.html или при поиске IBM Integration RESTful API
  • Это возможно, поскольку UUID узлов не изменяется, если вы не удалите и не создадите его заново..

Если у вас есть сценарии развертывания , тогда:

  • Добавьте к нему команду mqsireportbroker и очистите значение UUID
  • Inпоток, которому необходимо значение UUID, добавляет к нему UDP (определяемое пользователем свойство) UDP_BrokerUUID и задает для него что-то вроде UNKNOWN
  • Затем в сценарии развертывания используйте mqsiapplybaroverride, чтобы изменить его на очищенное значение.

Затем есть IBM Integration API Exerciser , который покажет вам, как работает API.каталог_установки \ server \ sample \ IntegrationAPI \ StartIntegrationAPIExerciser

Наконец, из любопытства, зачем вам UUID узла?

Кэширование

Идет примерно так,Создайте jar-файл, похожий на тот, который указан в ссылке @Daniels.Примечание

DECLARE S_CacheRow SHARED ROW; -- Done at global level
CREATE COMPUTE MODULE DoingSomething
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
    CACHE: BEGIN ATOMIC
        IF NOT EXISTS(S_CacheRow.UUID[]) THEN
            SET S_CacheRow.BrokerUUID = GetBrokerUUID();
        END IF;
        SET Environment.BrokerUUID = S_CacheRow.BrokerUUID;
    END CACHE;
END;
END MODULE;

CREATE FUNCTION GetBrokerUUID() 
RETURNS CHAR 
LANGUAGE JAVA 
EXTERNAL NAME "mycompany.common.GetBrokerInfo.getBrokerUUID" 
;

import com.ibm.broker.config.proxy.*;

public class GetBrokerInfo {

    public static String getBrokerUUID() {

    BrokerProxy bp = null;
    try {
        bp = BrokerProxy.getInstance();   
    } catch (ConfigManagerProxyException ex) {
        System.out.println("Error connecting: " + ex);
    }

    String brokerUUID = '';
    if (bp != null) {
        brokerUUID = bp.getUUID();
        bp.disconnect();
    }  
    return brokerUUID;    
}

Обратите внимание, что я написал это от руки, и он не проверен.Но это охватывает основные моменты.Вам нужно будет скомпилировать jar и поместить jar в папку общих классов, как правило, / var / mqsi / shared-classes

0 голосов
/ 04 декабря 2018

При просмотре страницы Доступные свойства , UUID посредника и имя хоста недоступны.

Но вы можете получить UUID посредника с помощью Monitoring Event ;вот образец из инфоцентра:

<wmb:messageFlowData>
   <wmb:broker wmb:UUID="d53122ae-1c01-0000-0080-b1b02528c6bf"
            wmb:name="myNode"/>
   <wmb:executionGroup wmb:UUID="d43122ae-1c01-0000-0080-b1b02528c6bf"
            wmb:name="default"/>
   <wmb:messageFlow wmb:UUID="e6d224ae-1c01-0000-0080-9100cd1a61f7"
            wmb:name="myMessageFlow" wmb:threadId="4201"
            wmb:uniqueFlowName="myNode.default.myApplication.myMessageFlow"/>
   <wmb:node wmb:nodeLabel="MQInput1" wmb:nodeType="ComIbmMqInputNode"
            wmb:terminal="in" wmb:detail="MYMESSAGEFLOW.IN"/>
</wmb:messageFlowData>
...