gpt4 book ai didi

java - 如何从 JMS 队列读取 ArrayList 对象?

转载 作者:太空宇宙 更新时间:2023-11-04 12:10:10 24 4
gpt4 key购买 nike

我是java新手,我正在尝试读取和写入集合对象ArrayList<T>进入 JMS 队列。我可以使用以下代码片段将对象写入队列。

List<Request> reqList = new ArrayList<Request>();
... code that populates the list ...
ObjectMessage om = session.createObjectMessage((Serializable) requestList);

上面的代码部分工作正常,我可以看到 JMS 中的记录队列。现在我无法从队列中读回记录,下面是代码片段。

@Override
public void onMessage(Message msg)
{
try {
String msgText;
msgText = msg.toString();
List<Request> requestList = null;
requestList = msg.getBody(ArrayList<Request>);

} catch (JMSException jmse) {
System.err.println("An exception occurred: " + jmse.getMessage());
}
}

我无法完成该方法,因为我在第 4 行收到错误。 getBody 方法需要我未能提供的类的类型。我尝试了不同的选项,例如 Request[].class , ArrayList.class ,和request.getClass()

但它们似乎都不起作用。谁能帮我指定 ArrayList<T> 的正确类型或List<T>以及如何获得它?

仅供引用,javax.jms中getBody的方法声明API 是

public <T extends Object> T getBody(Class<T> type) throws JMSException; 

感谢您的帮助。

问候。

最佳答案

尝试这样发送;

ArrayList<Request> reqList = new ArrayList<Request>();
ObjectMessage objectMessage = session.createObjectMessage();
objectMessage.setObject(reqList);
producer.send(objectMessage);

并像这样阅读:

...
if (message instanceof ObjectMessage) {
Object object = ((ObjectMessage) message).getObject();
ArrayList<Request> request = (ArrayList<Request>) object);
...

如果这不起作用,请尝试创建包含多个选项的对象,例如具有请求列表字段的请求。不要忘记 Requests 对象必须实现 Seriazable。

关于java - 如何从 JMS 队列读取 ArrayList<T> 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39938314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com