C# mqwebspheremessageid的困境

C# mqwebspheremessageid的困境,c#,ibm-mq,C#,Ibm Mq,另一个新的MQ服务器问题。我正在构建一个ASP.NET C#应用程序,该应用程序需要浏览消息,将消息文本保存到数据库,然后读取消息,以便将其从队列中删除。这样,如果保存失败,消息仍在队列中,我不必要求重新发送 问题是,我需要一种在浏览邮件时唯一标识邮件的方法,以便在成功保存数据库后读取(删除)该邮件。我阅读了有关关联ID和MessageId的信息,但在获取值时遇到问题 CorrelationId总是空的,所以我不能使用它。messageId我不知道如何将其转换为可读的内容 例如: MQ Expl

另一个新的MQ服务器问题。我正在构建一个ASP.NET C#应用程序,该应用程序需要浏览消息,将消息文本保存到数据库,然后读取消息,以便将其从队列中删除。这样,如果保存失败,消息仍在队列中,我不必要求重新发送

问题是,我需要一种在浏览邮件时唯一标识邮件的方法,以便在成功保存数据库后读取(删除)该邮件。我阅读了有关关联ID和MessageId的信息,但在获取值时遇到问题

CorrelationId总是空的,所以我不能使用它。messageId我不知道如何将其转换为可读的内容

例如: MQ Explorer显示的消息ID为:AMQ AZMEUNK62 bSÝ。MQ Explorer表示消息ID字节为:414D51205534E4A5241523632202020126210532001DD02

如何将消息ID字节转换为人类可读的字符串并返回

我试过下面的代码,它返回不可用的结果(AMQ AZMEUNK62)↕B►s☺?☻)

因为这些帖子,我尝试了这些方法-

任何想法都是最受欢迎的。

MQ消息和Correl(和组)ID不是人类可读的,我强烈建议您将它们保留为二进制,即字节数组(或者转换为字符串中的十六进制数字或类似的东西,如果您真的想要一个可显示的版本)。该字符串包含AMQ、qmgr名称的开头以及一些二进制信息(例如,与日期/时间和计数器有关)。(C应用程序中常见的一个问题是人们对其进行strcpy,它在第一个null处截断,并且从不匹配任何内容)


这里有一个更好的问题是您的实际问题是什么。您可以在游标下浏览、获取消息,或者如果您知道可以通过消息id获取的msgid。您可以在同步点下获取消息,该同步点在数据库更新后提交之前不会删除它,或者您可以考虑让get与数据库更新处于同一事务中……有f选项,这取决于您需要什么!

谢谢Jason。我将以二进制形式将消息ID存储在数据库中,然后稍后使用它从队列中删除该特定消息。我想真正让我头疼的是MQ Explorer对消息ID字节的显式表示;我试图获取该值,但似乎不可能。
string msgIdStr = System.Text.Encoding.Default.GetString(mqMessage.MessageId); 
string strMsgId = Encoding.UTF8.GetString(mqMessage.MessageId, 0, mqMessage.MessageId.Length);