【问题标题】:Sending xml messages to IBM MQ using spring batch使用 Spring Batch 将 xml 消息发送到 IBM MQ
【发布时间】:2019-06-23 12:15:53
【问题描述】:

我需要将 xml 消息发送到 IBM MQ。

  1. 从源系统接收消息并转换为 xml 并使用 JMS 将其发送到 IBM MQ。

  2. 从源系统接收 xml 消息并直接发送到 IBM MQ。

对于第二个需求,xml需要使用spring batch转换为JMS消息,否则可以直接发送到IBM MQ?

请给我一个建议。

【问题讨论】:

    标签: java spring spring-batch ibm-mq


    【解决方案1】:

    如果您使用 JMS,那么您尝试发送到 JMS 提供者(例如 MQ)的任何消息都需要包装到实现 javax.jms.Message 的类中:

    http://docs.oracle.com/javaee/5/api/index.html?javax/jms/Message.html

    在您的实例中,这实际上取决于您存储 XML 的方式。我不知道有任何诸如“XML 消息”之类的东西。我应该想象您将它存储在 String 或某种类型的 Object 中。

    一种选择是使用 javax.jms.TextMessage 和 XML 的字符串表示形式。

    或者,如果您的 XML 对象是可序列化的,并且接收实体可以反序列化该对象,您可以考虑使用 javax.jms.ObjectMessage。

    【讨论】:

    • 谢谢。我认为这对我有用。我将使用 Spring Batch 创建中间件应用程序。所以它将是 JAR,cron 作业将在特定时间触发这个 jar。但是有没有可用的选项,比如我在 MQ 中收到一条消息然后立即接收并进行转换??
    • 您可以在该用例中使用异步接收,实现 onMessage() 并让应用程序一直运行,而不是通过 cron。在这种情况下,您的应用程序将花费大部分时间什么都不做。当新消息到达时,它将被传递给您的应用程序进行处理。此处的示例:docs.oracle.com/cd/E19798-01/821-1841/bncfh/index.html
    • 感谢您的快速回复。但是我的 jar 是独立的,它不会被部署到任何地方。它将在 Linux 服务器中。当我执行 java -jar 命令时,jar 将查找文件或消息进行处理。在这种情况下,异步接收将如何工作?
    • 请看我发送的链接。 onMessage() 和异步接收与应用程序服务器(通过 MDB 实现相同的东西)无关。它可以使用 java -jar 找到,唯一的区别是应用程序将长时间运行而不是快速返回。您需要分叉您的进程以将控制权返回给控制台。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 2021-08-17
    • 2016-04-08
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    相关资源
    最近更新 更多