Web services Spring MessageListener多条消息

Web services Spring MessageListener多条消息,web-services,spring,jms,Web Services,Spring,Jms,我正在实现一个SpringMessageListener,它正在侦听JMS队列以处理包含XML的消息 My beanProposalSOAListener将处理队列中大约5条或更多的XML消息。我的代码如下 有没有办法在这个类上指定不同的方法来处理不同的XML消息 public class ProposalSOAListener implements MessageListener { public void onMessage(Message message) {

我正在实现一个SpringMessageListener,它正在侦听JMS队列以处理包含XML的消息

My beanProposalSOAListener将处理队列中大约5条或更多的XML消息。我的代码如下

有没有办法在这个类上指定不同的方法来处理不同的XML消息

public class ProposalSOAListener implements MessageListener {

    public void onMessage(Message message) {

        if (message instanceof TextMessage) {
            try {
                System.out.println(((TextMessage) message).getText());
            } catch (JMSException ex) {
                throw new RuntimeException(ex);
            }
        }
        else {
            throw new IllegalArgumentException("Message must be of type TextMessage");
        }
    }

} // end of ProposalSOAListener class

你的问题引出了一大堆架构问题。您希望此mesasge侦听器完成此工作,还是将其交给其他组件?是否存在事务性考虑因素?您是否有内存限制?例如,您是否需要基于流的XML处理?做

好消息是,在春天里,你可以找到很多拼图的拼图

下一个简单的步骤是使用Spring对象XML封送(OXM),选择其中一种技术,并将封送器连接到侦听器bean中

另一种技术是使用SpringApplicationEvent接口,读取从队列中传入的消息,并在内部将它们发布到特定类型的侦听器。它可以与上面的对象编组结合使用

最后但并非最不重要的一点是,如果这是SOAP web服务,那么您可以看看Spring WS,它使用类似的消息容器将消息从网络中拉出来,对它们进行整理,并调用Spring WS端点(即满足该接口约定的服务接口)


强烈建议使用来解决此类问题。本质上,您必须实现一个jms入站网关来获取消息。此时,您可以将其转换为对象,然后将消息路由到相应的service activator组件,该组件可以映射到您的实例和方法。

这5条消息的区别是什么?它们都包含关于提案请求的不同负载XML消息。示例CreateProposalRequest.xml GetProposalRequest、AddStructuredDataRequest等;那是一口。感谢您提供的所有信息,我将研究您的建议,以确定哪一个最适合我的案例。