您的位置:首页 > 其它

MB备忘----2

2010-07-27 16:13 190 查看

基于上午的悲壮路径走到这儿差不多可以进行一些基本开发了(算是环境准备好了吧) 既然要进行开发,那么,从哪儿入手呢。

一,学会使用工具,debug工具太重要了,回忆性学习一下如何使用。

二,二类主要项目,消息集项目,消息流项目。

三,消息流的二个主要操作ESQL,java

四,数据源配置(如果消息流操作了数据库的东西)

五,监控,调优。

 

每个部分深入细节内容比较多,我想先理一下每个部分的主要功能点。先要知道如何做,然后才可能知道做得如何。正常人的思维,某人还是有一点的。

 

一,关于debug 要进行debug,切换到debug视图。

         但是在此之前,在[代理管理]视图,请右点[执行组]选择[属性],设置JVM端口



 

设置完成,重启动代理及配置管理器

 

 


然后切换到[调试视图]

在这个视图下面,你将看到一个[调试UI守护程序正在侦听端口8001]

这个端口可以改,是输出到用户界面相关的一个端口,绝对不要与执行组设置的调试端口相冲突。

 



 

这样就完成了设置。




完成后,设置页面下角有一个[调试]按钮,点击进入调试。


这样,调试功能就能用了。

 

 

==================================================

==================================================

二,消息集,消息流项目

        建立一个消息集项目,然后会产生一个 messageSet.mset

       选定此项目打开,然后可以设置  

               消息域message domain   =可选

               缺省的物理格式 =XML,CWF,TDS三选一(如果前面是MRM,XML...)

              并且可以设置每个物理格式的相关的项目。

 

         然后创建消息定义文件,消息定义文件可以创建多个,但所有的都是在messageSet.mset属性下

                     分别设置在选定[XXX.mxsd][消息][消息.xxx][类型][类型.xxx]时对应的属性。特别是在选定某一个元素或者类型的时候,可以设置CWF、TDS等操作时候的定长长度或者分隔元素。

 

 

 

 

下面做几个常做的事情:

将下面的信息转换成XML

姓名|27|地址|10086|1391043300

汪汪|27|地址|10086|1391043300

汪汪|27|地址|10086|1391043300

汪汪|27|地址|10086|1391043300

汪汪|27|地址|10086|1391043300

汪汪|27|地址|10086|1391043300

汪汪|27|地址|10086|1391043300

汪汪|27|地址|10086|1391043300

正正|27|地址|10086|1391043300

正正|27|地址|10086|1391043300

正正|27|地址|10086|1391043300

正正|27|地址|10086|1391043300

正正|27|地址|10086|1391043300

正正|27|地址|10086|1391043300

正正|27|地址|10086|1391043300


转换成类似下面的

<MSGEmployeeList xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">


 <Employee>

  <name>汪汪</name>

  <age>27</age>

  <address>地址</address>

  <code>10086</code>

  <mobile>1391043300</mobile>

 </Employee>

....................................................

</MSGEmployeeList>

 

从XML格式知道,原来数据中<MSGEmployeeList></MSGEmployeeList>元素下面的每一项区分是以<CR><LF>来做的,所以,定义这么一个复杂类型,选定这个类型,然后设置它的属性[数据元素界定方式=定界所有元素][定界符=<CR><LF>]

同样的做法,对每一行记录,要将它转换成XML元素,定义为 <Employee> </Employee>这一个类型处理这一行元素时,用的方式与其父亲结点一样。[数据元素界定方式=定界所有元素][定界符=|]

这样,所有的消息就可以被解析了。当然,如果某个元素可有可无,也可以在元素对应的项目中设置,如果那一项目没有也可以处理了。


当然,做到这儿还没有完成呢。这儿还只处理了数据到XML的转换关系,显然,只定义关系是不会自动转换的。还要做什么呢?定义SCHEMA文件时有XML,TDS,CWF这三种,现在是想输出XML,这个物理格式有一个名称通常情况下叫XML1。这样,我们知道了输入与输出的相关东西。如何在MB中实现呢?这儿就涉及消息流设计的时候的设置。输入点当然是在输入的MQ对应点设置,比如,现在输入的消息域是什么---MRM,消息集是什么,消息类型是什么,输入消息的格式是什么,比如这儿是TDS1.这样,输入消息后就知道套用哪个消息集的哪个消息模板了。当然,可能这个模板可以接受多种数据的输入,那么,指定数据的输入类型以便模板装入相关数据。现在,我们知道输入项目相关设置完成,但是,这样设置后我也不知道它最终要表现的形式是什么样的啊。也许你是要将TDS的转换成CWF的(不等长的时候用空格来代替),也许是XML的,更有可能还是TDS的,只是分隔符号不一样了。所以,我们增加了一个compute节点,在compute节点中我们指定输出消息的物理格式如:SET OutputRoot = InputRoot;

     SET OutputRoot.Properties.MessageFormat = 'XML1';

如果不做这样的处理,直接从一个Queue到另一个Queue,消息不是会表达成您要的格式的。


从这一个示例中可以学习到三种物理格式的消息是可以互相转换的。当然我的意思是要会他们的互相转换。

 

 

再做一件事情,那就是把


abcdeabcdeabcdeaXX20abcdeabcdeabcdeaXX22abcdeabcdeabcdeaXX20abcdeabcdeabcdeaXX22

这样的字符串以60长度为一段,表示成XML

假设为<ROOT><a>....</a></ROOT>

在SCHEMA中,设定复杂类型ROOT,然后里面有一个简单类型a,a的物理属性CWF1里面有一个属性为[物理类型=定长字符串][长度=60]。还有一些对齐格式,如果不够用什么填充等等项目。一一设置就行了。


然后做一个消息流,指定输入是什么,然后在ESQL中指定输出形式是什么。。。。。。

这样,放几条消息试一下。没问题,转换成相应的XML了。

PASS

打完收工。

 

 

比较长了,后面还有三部后分别的文章写。

 

 

 

 

实验做到最后,还发现一个特别不爽的问题,我原来做了一个消息流及消息集项目,那是在6.0.2下面做的。

我将项目导入到6.1的环境下面,然后分别在消息流及消息集项目 中增加一个流定义和消息定义文件。

然后打bar文件,放到执行组中居然也不能显示出相应的部署结果(空,与没部署一个反应)。

找半天没找出原因。后来新建立了消息流项目和消息集项目,再打bar ,成功运行(做的消息流和集完全一样的。)太不爽了。。。。。。

 

 

上面都是个人的做法,现在跟着红皮书走一下流程:

所有开发都要切到开发视图,所有部署都要切到配置视图,调试要切到调试视图。。。。。就是说,所有操作的视图要对。

 

创建和删除一个消息集工程,删除时可以选择是否删除相关文件及目录。如果只是从视图中删除,以后还可以导入,如果是从目录中删除,以后就找不回来。这就像把不要的东西从桌面上拿走,放到储藏室或者丢到垃圾桶的区别。。

做了这些,然后学会定义删除消息定义文件,消息对象,类型等等。很常用的操作。红皮书花了159页之多。。。。非常的仔细,没事的时候可以慢慢看一下,当就读英语了。

 

下面的谈论的细节是非常重要的,就是做这些事情的时候,知道在做什么吗?非常非常重要。完成这一部分是个非常大的工作量。同时,有时候还要结合ESQL编程才能正真明白在做的事情是什么。

工作量大:要深入体会---绝知此事要恭行:回头看似乎很简单,做技术的偶尔总会不理解一些东西,慢慢就会了,就一知半解了,就不知道自己是谁了。

 

 

 

 

 

 

 

 

 

 

 

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: