当前位置: 首页 > 知识库问答 >
问题:

EBCDIC中到大型机MQ的独立JMS

周洋
2023-03-14

我是Websphere MQ(IBM z/OS)技术的新手。我们需要实现一个独立的应用程序,该应用程序使用JMS技术连接到一个MQ服务器(在IBM z/OS上,由一个不同的组织维护,我们只有有限的访问权限),并将一条消息放到队列中。

下面是我的代码片段。

private void sendMessage(String queue, String msg) {
        JmsFactoryFactory ff = JmsFactoryFactory.getInstance(WMQConstants.WMQ_PROVIDER);
        JmsConnectionFactory cf = ff.createConnectionFactory();

        cf.setStringProperty(WMQConstants.WMQ_HOST_NAME, host);
        cf.setIntProperty(WMQConstants.WMQ_PORT, port);
        cf.setStringProperty(WMQConstants.WMQ_CHANNEL, channel);
        cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT);
        cf.setStringProperty(WMQConstants.WMQ_QUEUE_MANAGER, queueManagerName);
        cf.setStringProperty(WMQConstants.USERID, user);
        cf.setStringProperty(WMQConstants.PASSWORD, password);

    Connection connection = null;
    Session session = null;
    Destination destination = null;
    MessageProducer producer = null;


        connection = cf.createConnection(user, password);
        session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        destination = session.createQueue(queue);
        //((MQDestination)destination).setCCSID(37);
        producer = session.createProducer(destination);

        TextMessage message = session.createTextMessage();
        message.setIntProperty(WMQConstants.JMS_IBM_CHARACTER_SET, 37);
        //message.setIntProperty(WMQConstants.JMS_IBM_ENCODING, 785);

        message.setText(msg);
        // Start the connection
        connection.start();

        // And, send the message
        producer.send(message);
}

请帮助我如何将消息放入EBCDIC格式。

共有1个答案

柳刚豪
2023-03-14

更重要的是,如果您的接收方不是Java客户端,则需要禁用JMS头,如下所示:

目的地=session.createqueue(“queue:///”+queue+“?targetclient=1”)

或者通过调用本机MQ实现:

http://www-01.ibm.com/support/knowledgecenter/ssfksj_7.0.1/com.ibm.mq.csqzaw.doc/jm10910_.htm

 类似资料:
  • 用数组和for循环 有溪流 一般来说,我知道ArrayList有开销,这可能导致数组的最小大小在看到增益之前。此外,如果有更好的方法来执行流操作或迭代。不确定forEach在这种情况下是否有效,因为它是一个终端操作,我需要按照array/arrayList的原始顺序捕获结果。

  • 有一些可以读取EDCDIC文件的解决方案,比如-https://github.com/rbheemana/cobol-to-hive,但是当EDCDIC文件包含偏移长度不相等的行时,这种方法就失败了。 我编写了MapReduce作业来读取EBCDIC文件,并通过读取基于偏移量值的每一行来转换为CSV/Parquet,因此所有行的长度都是固定的,下面是示例代码 当输入的EBCDIC文件不能被偏移量(

  • 我正试图按照官方文档设置一个Spark独立集群。 我的主人在一个运行ubuntu的本地vm上,我也有一个工作人员在同一台机器上运行。它是连接的,我能够在大师的WebUI中看到它的地位。 以下是WebUi图像- 我已经在两台机器上的/etc/hosts中添加了主IP地址和从IP地址。我遵循了SPARK+独立集群中给出的所有解决方案:无法从另一台机器启动worker,但它们对我不起作用。 我在两台机器

  • 我正在使用CCDT文件连接到队列。

  • 假设我有3个简单的SparkML模型,它们将使用相同的数据帧作为输入,但彼此完全独立(在运行序列和使用的数据列中)。 我想到的第一件事是,只需使用阶段数组中的3个模型创建一个管道数组,然后运行总体拟合/变换来获得完整的预测等等。 但是,我的理解是,因为我们将这些模型作为序列堆叠在单个管道中,Spark不一定会并行运行这些模型,即使它们彼此完全独立。 也就是说,有没有办法并行拟合/转换3个独立模型?