gpt4 book ai didi

rabbitmq - IBM MQ 中的消息查看

转载 作者:行者123 更新时间:2023-12-04 01:48:14 25 4
gpt4 key购买 nike

在 MSMQ 中,有一项功能允许用户在不实际使用消息的情况下查看消息。即,我基于 MessageID 查看队列中的下一条消息。如果我对消息不感兴趣,我可以将消息放回队列中(即将未确认的消息添加回队列并保留消息 ID)。

RabbitMQ 中也存在类似的功能。然而,在 RabbitMQ 中,它并没有以干净的方式完成。您可以通过从队列中取出消息然后不发送确认来模拟查看消息,这样 RabbitMQ 就会将该消息添加回队列。但是我读到,当未确认的消息重新添加到队列时,RabbitMQ 可以重新排序消息并增加消息 ID。

有没有人遇到过这个问题。

还有谁知道 IBM MQ 是否支持这种窥视行为/功能?

问候

最佳答案

IBM MQ 提供了一种无需将消息从队列中移除即可浏览消息的方法。您可以从头开始浏览消息并遍历队列中的所有消息。您还可以使用 MessageId 或 CorrelationId 浏览特定消息。

这是 C# 中用于浏览队列中消息的代码段。

    /// <summary>
/// Browse messages in a queue
/// </summary>
private void BrowseMessages()
{
MQQueueManager qm = null;
MQQueue queueGet = null;
Hashtable mqProps = null;

try
{
mqProps = new Hashtable();
// Setup properties for connection
mqProps.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED);
mqProps.Add(MQC.HOST_NAME_PROPERTY, "localhost");
mqProps.Add(MQC.PORT_PROPERTY, 1414);
mqProps.Add(MQC.CHANNEL_PROPERTY, "QM.SVRCONN");

// Open connection to queue manager
qm = new MQQueueManager("QM", mqProps);

// Open queue for browsing
queueGet = qm.AccessQueue("Q1", MQC.MQOO_BROWSE | MQC.MQOO_FAIL_IF_QUIESCING);

// In a loop browse all messages till we reach end of queue
while (true)
{
try
{
// Need to create objects everytime
MQMessage msg = new MQMessage();
MQGetMessageOptions gmo = new MQGetMessageOptions();

// Use browse next option to start browsing
gmo.Options = MQC.MQGMO_BROWSE_NEXT;
queueGet.Get(msg, gmo);
Console.WriteLine(msg.ReadString(msg.MessageLength));
}
catch (MQException mqex)
{
// When there are no more messages to browse, the Get call
// will throw MQException with reason code MQC.MQRC_NO_MSG_AVAILABLE.
// But here we close the queue and break out of loop for all exceptions
queueGet.Close();
break;
}
}
qm.Disconnect();
}
catch (MQException mqex)
{
Console.WriteLine(mqex);
}
}

关于rabbitmq - IBM MQ 中的消息查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30324851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com