首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在IBM客户端中传递in

在IBM客户端中传递in
EN

Stack Overflow用户
提问于 2013-04-02 01:15:36
回答 2查看 3.5K关注 0票数 1

我将消息从一个队列读取到另一个队列。但是,没有保留我的相关ids。

如果导入队列中的消息的相关id为"ABC12345“,则当我将其放入导出队列时,关联id的值是不同的。

如何在两个队列之间保持相同的关联id,并且始终具有唯一的消息id?

得到:

代码语言:javascript
运行
复制
mqQueue.Get(mqMsg);
string messageID = Convert.ToString(mqMsg.MessageId);
string correlationID = Convert.ToString(mqMsg.CorrelationId);

例如,如果相关id为"000123456789",则在读取后,在将其放回时,会更改相同消息的值。

放:

代码语言:javascript
运行
复制
 mqMsg.CorrelationId = System.Text.Encoding.UTF8.GetBytes(correlationID);
 mqQueue.Put(mqMsg, mqPutMsgOpts);

我通过MQ.NET类使用MQ和GET选项。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-03 05:19:45

当我将消息放入另一个队列时,下面的代码片段保留了相关id。在我的样本中,我做了以下工作:

1)向importQ发送具有唯一相关ID的消息。

2)从importQ获取消息。

3)将接收到的消息发送给exportQ

代码语言:javascript
运行
复制
    public static void preserveCorreLid()
    {
        Hashtable mqProps = new Hashtable();
        MQQueueManager qm = null;
        String strCorrelId = "00123456789";

        try
        {
            mqProps.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED);
            mqProps.Add(MQC.CHANNEL_PROPERTY, "NET.CLIENT.CHL");
            mqProps.Add(MQC.HOST_NAME_PROPERTY, "localhost");
            mqProps.Add(MQC.PORT_PROPERTY, 2099);

            qm = new MQQueueManager("QM", mqProps);

            MQQueue importQ = qm.AccessQueue("IMPORTQ", MQC.MQOO_INPUT_SHARED |MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING );

            MQMessage mqPutMsg = new MQMessage();
            mqPutMsg.WriteString("This is an import message");
            mqPutMsg.CorrelationId = System.Text.Encoding.UTF8.GetBytes(strCorrelId);
            MQPutMessageOptions mqpmo = new MQPutMessageOptions();
            importQ.Put(mqPutMsg,mqpmo);

            MQMessage respMsg = new MQMessage();
            MQGetMessageOptions gmo = new MQGetMessageOptions();
            gmo.WaitInterval = 3000;
            gmo.Options = MQC.MQGMO_WAIT;

            try
            {
                importQ.Get(respMsg, gmo);
            }
            catch (MQException ex)
            {
                Console.Write(ex);

                Console.WriteLine("Queue Name : " + importQ.Name + ":");
            }
            importQ.Close();

            MQQueue exportQ = qm.AccessQueue("EXPORTQ", MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING);
            exportQ.Put(respMsg);
            exportQ.Close();
            qm.Disconnect();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
        }
    }
票数 1
EN

Stack Overflow用户

发布于 2013-04-02 18:10:44

这一行代码将获得相关id。

代码语言:javascript
运行
复制
  correlationID = System.Text.Encoding.UTF8.GetString(mqMsg.CorrelationId);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15754550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档