【发布时间】:2015-08-25 21:05:26
【问题描述】:
我是 IBM MQ 的新手。使用以下代码,我可以轻松地将消息放入队列并获取该消息。
public void QueuePut()
{
queue = queueManager.AccessQueue("Q1", MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING);
MQMessage message = new MQMessage();
message.WriteString("stackoverflow");
MQPutMessageOptions putMessageOptions = new MQPutMessageOptions();
putMessageOptions.Options += MQC.MQPMO_ASYNC_RESPONSE;
queue.Put(message, putMessageOptions);
}
public void QueueGet()
{
queue = queueManager.AccessQueue("Q2", MQC.MQOO_INPUT_AS_Q_DEF + MQC.MQOO_FAIL_IF_QUIESCING);
MQMessage gotMessage = new MQMessage();
queue.Get(gotMessage);
string str = message.ReadString(gotMessage.MessageLength);
}
您可以很容易地看到我正在向“Q1”写入消息并从“Q2”读取它,因为 Q1 是 别名队列
现在,我想要获取有关我在 QueueGet 函数中获得的消息的信息。我想知道的是 gotMessage 来自'Q1',即使我在'Q2'中阅读它。
【问题讨论】:
-
这听起来不对,如果将 Q2 队列中的消息放在 Q1 队列中,您如何读取它?
-
@Alioza Q1 是 Q2 的别名。
-
您还需要找出原始队列名称放在哪个位置吗?我找到了一种解决方法,通过将别名队列指向主题对象然后将目标队列订阅到主题字符串来实现这一点。这将在 MQMD 中添加可以指示原始队列名称的属性。如果您希望我写下详细信息作为答案,请告诉我?