标签: ibm-mq

使用 java 连接到 ibm mq 7.5 的问题

我对 ibm mq 很陌生,我发现与 mb 相关的文档或书籍很少,我找到的唯一一本是 2004 年写的“WebSphere MQ Using Java”。但现实世界已经发生了很大变化。我根据this在redhat linux 64位上成功安装并验证了mq server 7.5

我还创建了 queue manager myqm1、 queue LQ.TEST、 channelJAVA.CHANNEL并通过服务器上的命令行进行了一些测试以确保它们运行良好。但是,当我在 windows xp 上安装 mq 客户端并在 java 代码下面编写时,它总是抛出一个exception:com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2035'

我的代码:

导入 com.ibm.mq.*; 导入 com.ibm.mq.constants.MQConstants;

/** * 简单示例程序 */ 公共类 MQSample {

// code identifier
static final String sccsid = "@(#) MQMBID sn=p000-L120604 su=_H-IvIK4nEeGko6IWl3MDhA pn=MQJavaSamples/wmqjava/MQSample.java";

// define the name of the QueueManager
private static final String qManager = …
Run Code Online (Sandbox Code Playgroud)

java ibm-mq

2
推荐指数
1
解决办法
2万
查看次数

为什么我会收到 MQRC_NO_MSG_AVAILABLE?

我有以下代码:

        MQQueueManager mqm = null;
        MQQueue mqQueue = null;
        try
        {
            mqm = new MQQueueManager("SWIFTQM", "SWIFTCHANNEL", "localhost");
            mqQueue = mqm.AccessQueue("SWIFTQ", MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_FAIL_IF_QUIESCING);
            MQMessage mqMsg = new MQMessage();
            MQGetMessageOptions mqGetMsgOpts = new MQGetMessageOptions();
            mqGetMsgOpts.Options |= MQC.MQGMO_SYNCPOINT;
            mqQueue.Get(mqMsg, mqGetMsgOpts);
            string s1 = "";
            if (mqMsg.Format.CompareTo(MQC.MQFMT_STRING) == 0)
                s1 = mqMsg.ReadString(mqMsg.MessageLength);
            string s2 = "";
            mqQueue.Get(mqMsg, mqGetMsgOpts);
            if (mqMsg.Format.CompareTo(MQC.MQFMT_STRING) == 0)
                s2 = mqMsg.ReadString(mqMsg.MessageLength);
        }
        finally
        {
            if (mqQueue != null)
                mqQueue.Close();
            if (mqm != null)
                mqm.Disconnect();
            if (mqm != null)
                mqm.Close(); …
Run Code Online (Sandbox Code Playgroud)

.net ibm-mq

2
推荐指数
1
解决办法
5234
查看次数

MQ(Websphere)连接问题java.lang.NoClassDefFoundError

我正在尝试从Java与MQ建立连接。我正在使用来自IBM的以下示例代码,但是可能已经过时了。我该如何解决该问题/我缺少什么?

import com.ibm.mq.*;            // Include the WebSphere MQ classes for Java package
import com.ibm.mq.jmqi.*;
import com.ibm.mq.constants.MQConstants;

public class MQSample
{
    private String qManager = "your_Q_manager";  // define name of queue
    // manager to connect to.
    private MQQueueManager qMgr;                 // define a queue manager
    // object
    public static void main(String args[]) {
        new MQSample();
    }

    public MQSample() {
        try {

            // Create a connection to the queue manager

            qMgr = new MQQueueManager(qManager);

            // Set up the options on the queue we …
Run Code Online (Sandbox Code Playgroud)

java database-connection jms ibm-mq

2
推荐指数
1
解决办法
7398
查看次数

在 put() 中忽略了 WebSphere MQ 6 消息分段选项?

我正在尝试让 MQ v6 使用消息标志 MQMF_SEGMENTATION_ALLOWED 和放置消息选项 MQPMO_LOGICAL_ORDER 按照 IBM 的帮助指南中的建议对消息进行分段。

ImqMessage message;
message.setFormat(MQFMT_STRING);    
message.setMessageFlags(MQMF_LAST_MSG_IN_GROUP | MQMF_SEGMENTATION_ALLOWED);

/* ... */

ImqPutMessageOptions pmopts;
pmopts.setOptions(MQPMO_LOGICAL_ORDER);

if (!queue.put(message, pmopts))
{
    buflen;
    m_iLastError = queue.reasonCode();
    CString reason;
    reason.Format(_T("%d"), queue.reasonCode());
    _errorMsg = "Reason code: " + reason;
    /* throw exception etc.. */    
}
Run Code Online (Sandbox Code Playgroud)

无论我是否指定这些标志,当我调用 put() 时,它总是返回一个 false 并且具有原因代码 (2010) MQRC_DATA_LENGTH_ERROR。

是否有任何与 v6 和分段相关的常见问题(例如它在 Windows 上不可用,任何类似的东西......),或者任何可以尝试的建议?

顺便说一句,对于稍微无上下文的代码示例,我们深表歉意。我会尽力回答人们对我的问题提出的问题。

c++ ibm-mq

2
推荐指数
1
解决办法
893
查看次数

记录 MQ 消息

我想将进入 MQ 队列的消息记录到数据库/文件或另一个日志记录队列中,但我无法修改现有代码。是否有任何方法可以实现某种类似于 HTTP 嗅探器的消息记录实用程序?或者也许 MQ 有一些内置的功能来记录消息?

提前感谢您的回答。

logging ibm-mq

2
推荐指数
1
解决办法
2791
查看次数

SingleWrite与TripleWrite

我非常了解使用SingleWrite的时间和地点可以作为MQ中的日志算法.它有利于高吞吐量,低并发工作负载.当工作负载更加并发时,TripleWrite的开销不是一个因素.

我不明白并且正在努力寻找任何信息是如何实际实现TripleWrite(自v6以来的Websphere MQ的默认值).我知道它实际上并没有将每个事务写入日志三次,并且当涉及到部分页面时,它的行为与SingleWrite不同.但它有什么不同的做法?它会调用fsync三次吗?

我没有任何真正的实际目的或问题需要解决,这比任何事情都更具好奇心.我已经使用Websphere MQ几年了,并希望更好地理解这一点.

有人能够放弃任何光明吗?

编辑:

我已经考虑了一些,其中一个选择是类似于InnoDB的DoubleWrite.InnoDB有一个双写缓冲区,在将更新写入数据文件之前,所有更改都按顺序写入.在恢复时,您有一个完整的成功编写的双写缓冲区可以从中恢复,或者表数据从未被修改过.

我不确定这是否与MQ的TripleWrite相似,因为它已在几个不同的实例中断言TripleWrite不会重复写入所有页面,并且TripleWrite在应用于部分页面时的行为与SingleWrite不同.

ibm-mq

2
推荐指数
1
解决办法
481
查看次数

QueueManager.Disconnect() 和 QueueManager.Close() 的区别?

我有一个代码,它在连接断开或抛出异常时断开队列管理器,如下所示

            if (queueManagerreceive != null)
            if (queueManagerreceive.IsConnected)
            {
                if (queuereceive != null)
                {
                    queuereceive.Close();
                }
                queueManagerreceive.Disconnect();
            }
Run Code Online (Sandbox Code Playgroud)

所以当我有一个 'MQRC_RECONNECT_TIMED_OUT' 异常时,我对上面的代码有问题,然后当它执行 queuemanager.Disconnect() 时它抛出一个异常“MQRC_CONNECTION_BROKEN”并且显然这会破坏代码作为异常抛出所以当我使用 queuemanager 时。 Close() 没有抛出异常,服务稳定。

有什么不同?我应该使用什么来删除并重新创建新连接?

请帮忙。

.net c# mq ibm-mq

2
推荐指数
1
解决办法
2081
查看次数

在证书签名请求 (CSR) 中使用公钥

在我们的服务器上创建 CSR 期间将生成公钥和私钥对。我们将通过持有私钥将 CSR 和公钥发送给 CA。CA 将在使用 CA 根证书的私钥对其进行签名之前验证我们的公钥。我们有自己的 CA 团队来认证 CSR 请求。我的查询如下:

  1. CSR 本身会包含公钥还是我们需要单独向 CA 提供公钥?
  2. CSR 是否会在将其发送给 CA 之前由我们的公钥签名(或)CSR 除了它之外还持有公钥?
  3. CA 将仅通过 CSR(或)对 CSR + 公钥的组合进行签名。?
  4. 我们应该在客户端和服务器端的信任存储中安装 CA 的根证书和中间证书吗?因为我们使用的是我们自己的 CA 而不是全局 CA。
  5. 当我们向客户端提供服务器证书时,该证书是否包含服务器的公钥。?
  6. 我们是否应该将服务器的公钥安装在客户端的信任库中以进行加密?

我在这里先向您的帮助表示感谢。

ssl mq ibm-mq

2
推荐指数
1
解决办法
1686
查看次数

向 MQ 发送消息时如何删除默认的 Spring JMS 模板标头?

使用 Java/Spring 与 WebSphere MQ 交互并尝试向其发送消息,Spring 不断向其添加以下标头信息:

RFH Ì ¸MQSTR ¸ <mcd><Msd>jms_text</Msd></mcd> <jms><Dst>queue:///MY.QUEUE.INFORMATION.TEST</Dst><Rto>queue:///MY.QUEUE.INFORMATION.TEST</Rto><Tms>123456789</Tms><Dlv>2</Dlv></jms>BEGINNING_OF_MY_PAYLOAD

我将如何删除所有内容并仅发送我的有效负载?人们可以在上面的代码片段中将我的有效负载称为BEGINNING_OF_MY_PAYLOAD.

这是我正在使用的功能:

public void sendMessage(final String text) {
        this.jmsTemplate.send(new MessageCreator() {
            @Override
            public Message createMessage(Session session) throws JMSException {
                Message message = session.createTextMessage(text);
                destination = session.createQueue("MY.QUEUE.INFORMATION.TEST");
                springJmsConsumer.setDestination(destination);
                message.setJMSReplyTo(destination);
                return message;
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

java spring jms ibm-mq

2
推荐指数
1
解决办法
1996
查看次数

IBM MQ-如何使用多个连接名称连接到队列管理器(一个已故障转移)

我对IBM MQ来说是新手。我的是一个多实例队列管理器。

一个实例就像故障转移。

即使其中之一发生故障,如何连接它们。

我不确定我的术语是否正确?

我正在尝试使用下面的示例进行连接

https://raw.githubusercontent.com/ibm-messaging/mq-dev-samples/master/gettingStarted/jms/JmsPutGet.java

jms spring-jms ibm-mq

2
推荐指数
1
解决办法
199
查看次数

标签 统计

ibm-mq ×10

java ×3

jms ×3

.net ×2

mq ×2

c# ×1

c++ ×1

database-connection ×1

logging ×1

spring ×1

spring-jms ×1

ssl ×1