在 Java 中通过 JMS 发送复杂对象

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3094952/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-30 00:19:39  来源:igfitidea点击:

Sending complex object via JMS in Java

javajmsmessaging

提问by ant

Is it possible to send complex messages via JMS? I can send TextMessages, Messages etc .. but when I try to send my custom object type MyObjecttrough send()method of MessageProducerI get compile error.

是否可以通过 JMS 发送复杂的消息?我可以发送 TextMessages、Messages 等......但是当我尝试发送我的自定义对象类型MyObjectsend()方法时,MessageProducer我得到了编译错误。

Then I tried to cast it, I get cast exception like MyObject cannot be cast to javax.jms.Message

然后我尝试投射它,我得到了投射异常 MyObject cannot be cast to javax.jms.Message

Here is a code I tried :

这是我试过的代码:

MessageProducer messageProducer = session.createProducer(destination);
messageProducer.send((Message)getMyObject()); //where getMyObject method retrieves mapped myObject type

anyone got any advice? thank you

有人有什么建议吗?谢谢

回答by jimr

As long as your object is Serializable, you can use an ObjectMessage

只要您的对象是Serializable,您就可以使用ObjectMessage

MessageProducer producer = session.createProducer( destination );
ObjectMessage message = session.createObjectMessage( getMyObject() );
producer.send( message );

回答by G__

You have one of two problems:

您有以下两个问题之一:

  1. MyObject does not implement javax.jms.Message
  2. getMyObject does not return a MyObject (assuming that it does implement Message)
  1. MyObject 没有实现 javax.jms.Message
  2. getMyObject 不返回 MyObject(假设它确实实现了 Message)