- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试开发一个 JMS 独立应用程序来读取和写入 MQSeries 上的队列。我的老板让我使用 pure java JMS(不是 ibm.mq lib)来做到这一点。
这里是建立jms连接需要的信息:
mq.hostname=10.10.10.10
mq.channel=API.CLIENTCHL
mq.queueManager=MQPETAPI
mq.port=1422
你知道怎么做吗?或者你有没有教我这样做的链接。
最佳答案
这里的问题是要求“我的老板让我使用纯 java JMS(不是 ibm.mq lib)来做到这一点。” JMS 是一种规范,每个实现都必须符合 API 和语义,但可以在低级别自由地做任何他们想做的事情。始终需要使用传输供应商提供的实现类。因此,如果您使用 WebSphere MQ 作为传输,则需要使用 IBM MQ JMS 类来编写 JMS 应用程序。
也就是说,如果您坚持使用纯 JMS API 调用,您将能够插入任何传输供应商的类。当您收到原始帖子中提到的要求时,通常会这样做。
有一篇文章准确地描述了您想要做什么,名为 Running a standalone Java application on WebSphere MQ V6.0 它仅使用 JMS API,并在本地文件系统(.bindings 文件)中使用 JNDI。通过将 IBM JMS 类换成另一个供应商并使用他们的 JNDI 工具,您将能够插入任何 JMS 传输,而无需使用这种方法更改您的代码。
如果您想在没有 JNDI 的情况下做同样的事情,请查看随 MQ 客户端安装提供的示例程序,您可以在其中获取 Java 类。在 UNIX/Linux 系统中,它们位于 /opt/mqm/samp
中,而在 Windows 中,它们位于 install_dir/tools/jms/samples
中。 SimpleRequestor.java
示例包含以下代码,用于在不使用 JNDI 的情况下初始化连接工厂:
try {
// Create a connection factory
JmsFactoryFactory ff = JmsFactoryFactory.getInstance(WMQConstants.WMQ_PROVIDER);
JmsConnectionFactory cf = ff.createConnectionFactory();
// Set the properties
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");
因为这种方法不使用 JNDI,所以您需要编写不能跨传输供应商传输的代码。它是 IBM WebSphere MQ 特定的。
如果您从某个地方获取 MQ jar 并且没有完整安装(因此没有示例),您可以将其下载为 SupportPac MQC7 .下载是免费的。通常,您应该使用最新的客户端,即使使用后级队列管理器。显然,您不会从 V6 QMgr 获得 V7 功能,但 V7 客户端中的 JMS 实现得到了很大改进,即使对于 V6 功能也是如此。如果由于某种原因你真的必须使用 V6 客户端,你可以下载它为 SupportPacMQC6 .无论您使用哪个客户端版本,请务必使用相应的信息中心。
最后,带有所有 SupportPacs 索引的登录页面是 here .
关于java - 如何将 Java JMS 与 MQSeries 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6935639/
我正在读这个 question和 corresponding answer并被答案第一行中的术语 JMS broker 弄糊涂了: MS (ActiveMQ is a JMS broker imple
我正在学习 API 中的 Reactive Streams,我对它与 JMS 之间的相似性感到震惊。在 JMS 中,我们也有异步处理、发布者和订阅者。我在进行这种等效时缺少什么观点? 最佳答案 Rea
假设生产者向 JMS 主题“新闻”发送一条消息。消费者 1 读取了消息,但消费者 2 处于离线状态,因此他还没有读取消息。 是否有任何内置(针对规范或实现)的方式来通知生产者消费者 1 已阅读他的消息
目前我正在开发一个 JMS 应用程序。但我使用普通的 JMS API 和属性文件进行配置。我的应用程序在 Weblogic 中运行并连接到我客户端的 MQ 系列服务器。 最近我知道我可以使用 Webl
我正在尝试使用 Solace 中可用的异步发送功能,但我打算使用 JMS 进行抽象,而不是直接使用 JCSMP 使用它。 JMS 2.0 支持异步发送以及其他新功能:http://www.oracle
我无法获得 javax.jms.ConnectionFactory注入(inject)我的独立 JMS 客户端。 我得到一个 java.lang.NullPointerException在 conne
保持 JMS 连接/ session /消费者始终打开是一种不好的做法吗? 代码草稿示例: // app startup code ConnectionFactory cf = (Connection
我有几个作业,每个作业都有多条消息排队。每个作业的消息随机交错。如果用户决定取消作业,我想从队列中删除属于该作业的所有消息。我已经能够使用 browse() 找到所有要删除的消息,但一直无法弄清楚如何
是否可以将主题配置为仅存储最后一条消息的副本并将其发送到新连接而不知道客户端标识符或其他信息? 更新: 从 Shashi 提供的信息中,我发现这两页使用 retroactive consumer 描述
目前正在使用 WebLogic 和分布式队列。我从文档中了解到,分布式队列允许您使用全局 JNDI 名称检索到集群中任何队列的连接。分布式队列为您提供的主要功能之一似乎是跨多个托管服务器的负载平衡连接
再见,我的基本要求是有一个可以发送消息的路由,并将其放在 JMS 队列中。 camel 上下文在 JavaEE 6 容器中运行,即 JBoss AS 7.1.1,因此它是 HornetQ for JM
我正在阅读 JMS 2.0 规范,其中提到(相关摘录下方)如果客户端尝试修改 Message 对象,则 JMS 提供程序可能会抛出异常。 我的问题是 JMS 提供者如何知道客户端是否试图修改 Mess
我的 spring 上下文文件中有以下设置。 "PowerEventQueue" “${
我正在尝试使用 JSP 连接到 ActiveMQ。但是,当我运行该程序时,它给了我以下类型的异常: NoClassDefFoundError: javax/jms/Destination . 我不确定
我刚看了CORBA和JMS,他们好像都是用来实现的代理架构/模式。 我对他们有几个问题 1.他们之间的区别我还不是很清楚,谁能解释一下? 2.CORBA 是否用于当今的 IT 解决方案?还是正在失去魅
我正在更新现有的 Mule 配置,任务是增强它以根据消息的某些属性将消息路由到不同的端点,因此最好对我手头的两个选项有一些利弊: 在消息上添加属性,使用“message-properties-tran
我有一个订阅 JMS 主题应用程序的 Java 应用程序,该应用程序偶尔会出现以下异常: javax.jms.JMSException: Connection has been terminated
我知道 Camel 的 JMS 组件用于接收消息,使用 Springs DefaultMessageListenerContainer。它可以配置为使用 CLIENT_ACKNOWLEDGE 模式来确
通常不鼓励使用从 JMS 提供者返回的消息 ID 作为相关 ID,将消息发布到队列中。人们如何为请求/响应架构生成相关 ID? 最佳答案 客户端可以使用唯一的 ID 标准,如 UUID生成新的 ID。
我有一个简单的代码可以将 2 条消息放入队列中。 1) 我用两台服务器设置了 connectionNameList。 2) 这两个服务器是独立的,但有相同的队列管理器和定义相同名称的队列,例如“QMg
我是一名优秀的程序员,十分优秀!