MB备忘----2
基于上午的悲壮路径走到这儿差不多可以进行一些基本开发了(算是环境准备好了吧) 既然要进行开发,那么,从哪儿入手呢。
一,学会使用工具,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编程才能正真明白在做的事情是什么。
工作量大:要深入体会---绝知此事要恭行:回头看似乎很简单,做技术的偶尔总会不理解一些东西,慢慢就会了,就一知半解了,就不知道自己是谁了。
阅读更多
- .max.mb.ma.fbx模型下载链接收集。备忘。
- MB备忘----3
- ArcGIS工具备忘
- PHP substr(),mb_substr()及mb_strcut的区别和用法
- IPV4与IPV6 的 一点区别 (不深究、只记录备忘)
- acl语法备忘
- html5 canvas绘图工具开发备忘
- iOS第三方开源库的吐槽和备忘
- Python备忘【1】输出0~255之间整数对应的二进制、八进制、十六进制数(填充对齐)
- FL2440移植linux2.6.33内核(备忘)(之四)
- CA (证书) <备忘>
- 阿里云 Tomcat https 免费DV ssl证书安装(记录备忘)
- PowerDesigner实体模型CDM中关于建立Entity之间关系的备忘
- Linux命令备忘实例(1)——终端输出
- VS2013+OPENCV3.0在WIN10下配置备忘
- 正则表达式整理备忘
- leetcode刷题,总结,记录,备忘 260
- php最简单服务器搭建和jquery中的ajax记录备忘
- jQuery]FullCalendar 备忘
- JQuery Mobile难点备忘