温馨提示:本人的工作问题,请绕行~~~
在适配ibmmq的时候,烦的一个很大的错误就是将send和get放在了一个main函数中,里面的gret方法的this对象中试图进行端到端,这是在一个线程中进行,很明显只是表面实现了端到端,实质上并没有实现,应该经这两个方法放到两个线程中。
ibmmq端到端的问题:
queue.set (message)
我开始放到了queue里,set和get的队列虽然是一个队列但不是一个对象只是名字的string是一样的,仔细观察代码会发现。
放在message中会将这个对象传过去,是一个对象。
而且将request_id放在queue中,requestid是一样的了就,需求是每个message的requestid都是不一样的
问题:如果是header final的话不能往里面set怎么办???????
解决:如果是fianl的话只能被修饰一次,但是它肯定是被赋值,也就是在外面的层会有指针指向它,也就是在它变成fianl之前对它进行抓取,这里注意,可能在外面的方法被赋值的地方是被包装起来的,所以可以从最里面逐层向外,通篇看全类。
不论是否实现端到端注意:
server端必须map.put rec.put (所以不能把这两行代码放在某个if中应该放在最后。)
client端不需要
通过代码一行一行往下找看能不能得到我想要的方法,
注意点:
A a = new A(), 从后面点进去,因为前面可能是接口,这一般是不能得到的,因为刚new出类来。
一般往里面set url 之类参数的肯定不能得到,因为还没有set进去。
一般是在set get send put 之类的字眼,是能够得到的。
方法:
正序,一层一层往里面点
倒序,通过报错找到最里面的,通过打断点。(习惯用的)
找到包含set get send 之类的地方,通过idea智能提示拥有的可以进行setheader的方法。(简单的)