【问题标题】:Put and Get Messages to IBM MQ from java code从 Java 代码向 IBM MQ 发送和获取消息
【发布时间】:2018-09-14 13:57:12
【问题描述】:

我正在学习 IBM MQ。我需要使用最佳实践从 Java 代码向 IBM MQ 发送和获取消息。

我做了这个问题,但我不知道这是否是最好的方法:How to put and get IBM MQ messages without application server

请给我一些建议好吗?

【问题讨论】:

标签: java queue jms message-queue ibm-mq


【解决方案1】:

public static void main(String[] args) {

Connection connection = null;
Session session = null;
Destination destination = null;
Destination tempDestination = null;
MessageProducer producer = null;
MessageConsumer consumer = null;

try {

  JmsFactoryFactory ff = JmsFactoryFactory.getInstance(WMQConstants.WMQ_PROVIDER);
  JmsConnectionFactory cf = ff.createConnectionFactory();

  cf.setStringProperty(WMQConstants.WMQ_HOST_NAME, "localhost"); 
  cf.setIntProperty(WMQConstants.WMQ_PORT, 1414);
  cf.setStringProperty(WMQConstants.WMQ_CHANNEL, "SYSTEM.DEF.SVRCONN");
  cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT);
  cf.setStringProperty(WMQConstants.WMQ_QUEUE_MANAGER, "QM1");

  connection = cf.createConnection();
  session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
  destination = session.createQueue("queue:///Q1");
  producer = session.createProducer(destination);

  long uniqueNumber = System.currentTimeMillis() % 1000;
  TextMessage message = session.createTextMessage("SimpleRequestor: Your lucky number yesterday was " + uniqueNumber);
  connection.start();
  producer.send(message);

  }catch (JMSException jmsex) {
 jmsex.printStackTrace();
}
}

【讨论】:

  • 所有 jars 都将在 com.ibm.mq.allclient.jar 中可用,并且这个 jar 在 MQInstallationDirectory/java/lib 文件夹中。
  • 是否可以设置message id
  • 你发送的是什么类型的消息?如果是map消息你可以设置自己的值来区分消息的id。否则,您也可以在 WebSphere MQ 控制台中查看每种消息类型的消息 ID。
  • 如果您想要代码,我正在发送带有名称值对等标题的 xml 消息,我将发布代码
【解决方案2】:

IBM 在 MQ 安装中提供了示例代码,您应该查看这些代码。

还有一些示例用于将 MQ 类用于 Java 和 JMS。 这些示例的源代码位于 Windows 上的“MQ 安装目录”\Tools 下。

【讨论】:

    【解决方案3】:

    对我来说,这似乎与您半小时前提出的问题重复。您似乎非常渴望得到答案,所以让我们看看这是否有助于您前进:

    无论实现如何,消息队列处理的基本原理都是相同的。鉴于这种情况,并且鉴于您正在学习,我认为您将从查看此 RabbitMQ 教程中受益: RabbitMQ tutorial

    RabbitMQ 免费且易于安装在您的本地机器上,因此您可以玩一玩,并且更容易理解它。该教程适合新手,自始至终都有很好的解释。

    这应该让您对所使用的方法和最佳实践有一个很好的了解。

    我的理解是,RabbitMQ 的使用也比 IBM MQ 广泛得多,因此在掌握它时您将能够获得更多的支持。

    一旦您学习了 RabbitMQ 的技术,我希望您可以将它们应用到 IBM MQ,这应该可以让您回答自己的原始问题。

    祝你好运!

    【讨论】:

    • 我认为 RabbitMQ 和 IBM MQ 之间的 java 连接非常不同。 RabbitMQ 仅支持 amqp,而 IBM MQ 支持 amqp、本地应用程序绑定、IBM MQ 专有客户端连接等等。 RabbitMQ 是轻量级的,但 IBM MQ 具有更多功能。因此,如果有人想利用这些特性,他们将不得不编写与 RabbitMQ 完全不同的代码。但我建议您使用这个免费软件工具来了解整体消息传递和排队的工作原理。
    猜你喜欢
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 2021-06-15
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多