Tag: ibm mq

MQJE001:完成代码’2’,原因’2538′

公共类PtpReceiver { public static void main(String[] args) { // TODO Auto-generated method stub try { MQEnvironment.hostname = “192.168.120.28:1415”; MQEnvironment.channel = “SFMS.TO.CBS”; MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES); System.out.println(“Q manager”); MQQueueManager qMgr = new MQQueueManager(“GSCBBRQM”); System.out.println(“Q manager11”); } catch (MQException ex) { System.out.println(ex.completionCode+ ex.reasonCode); } } } 我收到了以下错误: MQJE001:完成代码’2’,原因’2538’。 任何人都可以帮我解决这个错误

MQQueueManager中的多个实例

我正在尝试将MQQueueManager与多个实例一起使用在.net中,我们提供了MQC.CONNECTION_NAME_PROPERTY提供的IBM MQ jar ConnectionName = “fred.mq.com(2344),nick.mq.com(3746),tom.mq.com(4288)”; Hashtable Properties-new Hashtable(); properties.Add(MQC.CONNECTION_NAME_PROPERTY,ConnectionName); MQQueueManager qmgr=new MQQueue Manager(“qmgrname”,properties); 来源: http : //publib.boulder.ibm.com/infocenter/wmqv7/v7r1/index.jsp?topic =%2Fcom.ibm.mq.doc%2Fun11010_.htm 但是,类似的东西,我可以在MQQueueManager上使用连接名称列表,不提供使用java。 你能帮帮我吗? 我使用的是7.0.1.6jar子

如何进行JMS同步请求

我有一个webapp,可以从外部应用程序获取和显示数据,只能通过消息传递(JMS)访问。 因此,如果用户在浏览器上提交请求,则相同的HTTP请求线程必须与Messaging系统(MQ Series)交互,以便相同的请求线程可以显示从Messaging System接收的数据。 我可以在这里使用一种模式吗? 我在网上看到了一些模糊的引用,它们以这种方式使用“Correlation ID”: Msg m = new TextMsg(“findDataXYZ”); String cr_id = m.setCorrelationID(id); sendQueue.send(m). // now start listening to the Queue for a msg that bears that specific cr_id Response r = receiverQueue.receive(cr_id); 那里有更好的东西吗? 我发现的其他模式希望响应是异步接收的……这对我来说不是一个选项,因为我必须在同一个HTTP请求上发回响应。

java websphere MQ

我的目标是使用WebSphere MQ java编程将n个消息放入for循环中到WebSphere MQ队列。 我的java程序将作为独立程序运行。 如果介于两者之间,我需要回滚所有消息。 如果没有exception,那么我应该提交所有消息。 在我完全完成之前,外部世界不应该在队列中看到我的消息。 我该如何实现这一目标? 根据T.Rob的回复更新了示例代码: 请检查示例代码是否正常? 设置MQGMO_SYNCPOINT只与我的程序调用有关吗? (因为并行运行的类似程序也会将消息放在同一队列中,并且这些消息不会受到程序的SYNCPOINT的影响。) public void sendMsg() { MQQueue queue = null; MQQueueManager queueManager = null; MQMessage mqMessage = null; MQPutMessageOptions pmo = null; System.out.println(“Entering..”); try { MQEnvironment.hostname = “xxxx”; MQEnvironment.channel = “xxx.SVRCONN”; MQEnvironment.port = 9999; queueManager = new MQQueueManager(“XXXQMANAGER”); int openOptions = MQConstants.MQOO_OUTPUT; queue = […]

使用JMS临时队列进行同步使用是一种好习惯吗?

如果我们使用“临时队列”使用JMS请求/回复机制,那么该代码是否可扩展? 截至目前,我们不知道我们是否每秒支持100个请求,或者每秒支持1000个请求。 下面的代码是我正在考虑实现的。 它以“同步”方式使用JMS。 关键部分是创建“消费者”以指向为此会话创建的“临时队列”的位置。 我无法弄清楚使用这样的临时队列是否是可扩展的设计。 destination = session.createQueue(“queue:///Q1”); producer = session.createProducer(destination); tempDestination = session.createTemporaryQueue(); consumer = session.createConsumer(tempDestination); long uniqueNumber = System.currentTimeMillis() % 1000; TextMessage message = session .createTextMessage(“SimpleRequestor: Your lucky number today is ” + uniqueNumber); // Set the JMSReplyTo message.setJMSReplyTo(tempDestination); // Start the connection connection.start(); // And, send the request producer.send(message); System.out.println(“Sent message:\n” […]

如何将消息发送到托管在IBM MQ集群中的不同队列管理器和主机名中的其他队列

我的基于Apache-camel的应用正在消耗来自IBM队列之一的消息,例如下面是连接工厂的详细信息 hostname=host1000 QManager=QM1000 Port=”some port” Channel=”common channel” Camel流程使用和处理并将响应发送到来自消息头的ReplyQueue。 from(wmq:queue:) .bean(“processBean”) .bean(“beanToSendMsgToReplyQueue”) 在驼峰标题中,我得到了JMSReplyQueue。 您可以看到它是一个不同的队列管理器,此队列管理器来自不同的主机,但在集群环境中。 JMSReplyTo = queue://QM1012/TEST.REPLY?targetClient=1 队列管理器也介于两者之间。 喜欢 queue:////? 以下是我在发送邮件时获得的例外情况。 ERROR o.apache.camel.processor.DefaultErrorHandler:215 – Failed delivery for (MessageId: ID-xxxxxxxxx-0-4 on ExchangeId: ID-xxxxxx-42443-1492594420697-0-1). Exhausted after delivery attempt: 1 caught: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: wmq://queue://QM1012/TEST.REPLY?targetClient=1 due to: Failed to resolve endpoint: wmq://queue://TAP2001R5/TEST?targetClient=1 due to: There are 1 […]

需要访问MQ 7的队列深度

我的下面是代码适用于MQ6,但对于MQ7,它给出了exception ‘package javaapplication1; import java.io.*; import java.net.*; import java.util.*; import java.util.TimerTask; import com.ibm.mq.MQEnvironment; import com.ibm.mq.MQException; import com.ibm.mq.MQQueue; import com.ibm.mq.MQQueueManager; import com.ibm.mq.constants.CMQC; class Connectivity { public static void main(String args[]) throws MQException { String qManager=””; int port_num=0; int openOptions = CMQC.MQOO_FAIL_IF_QUIESCING + CMQC.MQOO_INPUT_SHARED; MQEnvironment.hostname = “Host_name”; MQEnvironment.port = port_num; MQEnvironment.channel = “Chn_name”; System.out.println(“Connecting to queue manager: […]

如何使用IBM MQ库从WebSphrere MQ MQMD头中读取值

我们将此代码段作为起点: import com.ibm.mq.MQEnvironment; import com.ibm.mq.MQException; import com.ibm.mq.MQGetMessageOptions; import com.ibm.mq.MQMessage; … int openOptions = MQConstants.MQOO_INPUT_AS_Q_DEF; MQQueue queue = qMgr.accessQueue(qName, openOptions); … MQMessage rcvMessage = new MQMessage(); MQGetMessageOptions gmo = new MQGetMessageOptions(); queue.get(rcvMessage, gmo); 现在我想获取消息类型和队列管理器的回复。 这不是太难,但我没有找到任何关于如何做到这一点。

IBM MQ – 权限 – 读取透视图

为了给队列管理器的所有对象 (队列,通道等)提供读取权限以监视透视图,需要什么命令/权限。 我的监控客户端使用java api。 MQZAO_ALL_ADMIN权限是否可以用于此目的。 可以使用setmqaut来设置此权限,但此命令具有+ put,+ get等选项,而不是MQZAO_ALL_ADMIN。 目前我在版本8.0.0.4中为每个队列等使用setmqaut 。

如何限制JMS DefaultMessageListenerContainer重试消息的次数?

我使用Spring JMS连接到Websphere MQ服务器。 我实现了SessionAwareListener接口来创建自定义侦听器,重用业务逻辑的旧代码。 在测试时,监听器抛出一个我无法捕获的StringIndexOutOfBoundsException。 但是,我在日志中看到以下打印了大约32次,然后DMLC停止了。 WARN – Execution of JMS message listener failed 有没有办法控制DMLC重试消息的频率,以及如何处理未捕获的exception?