最近对公司实现分布服务,然后通过ActiveMQ发送消息,消息我是封装到一个实现了序列化的对象里面通过发送ObjectMessage来发送,在接收的时候发现虽然只发送了一个消息,但是在Listener的日志里面看到似乎消息被接收了N次,但是看发送端的Log,消息确实只发送了一次,而且另外一个代码分支发送同样的类的实例,却是正常的,后来看了一下,在出错的代码分支里面,类实例里面的一个变量没有设值,设置了值以后就好了。如下:
//出错的分支 ObjActiveMQ o1 = new ObjActiveM(); o1.n1="11111"; o1.n2="22222"; //这里没有设置n3 //正确的代码分支 ObjActiveMQ o2 = new ObjActiveM(); o1.n1="aaaaa"; o1.n2="bbbbb"; //这里设置了n3的值 01.n3="cccccc";
本文探讨了使用ActiveMQ发送序列化对象时遇到的消息重复问题。作者发现未初始化的字段会导致消息看似被多次接收,并分享了解决方案。
644

被折叠的 条评论
为什么被折叠?



