java - 使用绑定(bind)到远程 MQ 的 JMS 连接

标签 java jms ibm-mq

我想配置 Java 应用程序以使用绑定(bind)文件与 JMS IBM MQ 队列配合使用。 我正在使用 IBM 提供的 JMSDEMO 应用程序。 它可以与本地 MQ 管理器配合使用,但我无法使其连接到远程管理器。 我已在远程计算机上生成了绑定(bind)文件并将其复制到我的计算机上。

我已将绑定(bind)文件中的“localhost”更改为远程计算机名称。 但是,该应用程序仍然认为它应该连接到本地 QM。 (实际上它忽略了主机名设置)。

这是 IBM 演示代码:

public static final String     cfLookup    = "JMSDEMOCF";
public static final String     JNDITopic   = "JMSDEMOTopic";
public static final String     JNDIQueue   = "JMSDEMOQueue";
public static final String     icf     ="com.sun.jndi.fscontext.RefFSContextFactory";

......

static              String     url         = "file:C:\\JMSDEMO\\JNDI";

......

  Hashtable environment = new Hashtable();
  environment.put(Context.INITIAL_CONTEXT_FACTORY, icf);
  environment.put(Context.PROVIDER_URL, url);
  ctx = new InitialDirContext( environment );


  connFactory = (ConnectionFactory)ctx.lookup( cfLookup );


  connection = connFactory.createConnection();
  connection.start();

以下是绑定(bind)文件的一些片段(JMSDEMOCF 是连接工厂的名称)

JMSDEMOCF/RefAddr/3/Content=<the remote machine name or IP; both ignored>
JMSDEMOCF/RefAddr/29/Content=<the remote machine name or IP; both ignored>(the remote port)

它还有以下行:

JMSDEMOCF/RefAddr/116/Type=XMSC_WMQ_LOCAL_ADDRESS

但删除它不会改变任何事情。

最佳答案

使用 MQ Explorer 在“绑定(bind)文件”中创建一个新的连接工厂(为什么要尝试手动编辑该文件?),并在这个新连接工厂上将传输选项指定为 MQ 客户端(默认为“绑定(bind)”,这是本地连接模式)。 在“连接”选项卡上指定 QM 的地址,并在“ channel ”选项卡上指定用于连接到 QM 的服务器连接 channel 。

从远程主机连接时,在应用程序中使用新的连接工厂。您可能需要在类路径中包含一些额外的 MQ JAR。

关于java - 使用绑定(bind)到远程 MQ 的 JMS 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34463851/

相关文章:

java - 如何正确清理内存?

java - 实例可以稍后完成其参数吗?

java - MessageDriverBean - 重试机制

java - 模拟 JMS 消息源

hibernate - Open Session In View 如何与 jms 连接/ session 一起使用?

java - jms 消息不移动 websphere 中的队列

java - 整数线性规划 Java : Multiple Open Source and Commercial tools are available. 使用哪一个?

java - VerticalGroup 内的标签不保留在左侧

c - MQOPEN 给出错误 2085,这是我以前没有的

php - 安装 mqseries PHP 时出现问题 - Ubuntu