适配ibmmq 之类的mq可能会遇到的错误。

版权声明:本文为作者原创,转载请注明出处,联系qq:32248827 https://blog.csdn.net/dataiyangu/article/details/83510955

温馨提示:本人的工作问题,请绕行~~~

在适配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端不需要

通过代码一行一行往下找看能不能得到我想要的方法,

注意点:

扫描二维码关注公众号,回复: 3904299 查看本文章

A a = new A(), 从后面点进去,因为前面可能是接口,这一般是不能得到的,因为刚new出类来。
一般往里面set url 之类参数的肯定不能得到,因为还没有set进去。
一般是在set  get   send put 之类的字眼,是能够得到的。
方法:

正序,一层一层往里面点
倒序,通过报错找到最里面的,通过打断点。(习惯用的)
找到包含set  get   send  之类的地方,通过idea智能提示拥有的可以进行setheader的方法。(简单的)
 

猜你喜欢

转载自blog.csdn.net/dataiyangu/article/details/83510955
今日推荐