C# 使用AMQ8377的事务性IBM MQ 9.0.0.3.NET监视器示例崩溃
我试图从IBM WebSphere 9.0文档中获取事务性.NET监视器示例(请参阅使用.NET监视器,以下文档第675页:) 我成功地编译了一切正常(目标是.NET 2.0),但是当使用runmqdnm运行监视器时,出现了一个异常:C# 使用AMQ8377的事务性IBM MQ 9.0.0.3.NET监视器示例崩溃,c#,.net,transactions,ibm-mq,C#,.net,Transactions,Ibm Mq,我试图从IBM WebSphere 9.0文档中获取事务性.NET监视器示例(请参阅使用.NET监视器,以下文档第675页:) 我成功地编译了一切正常(目标是.NET 2.0),但是当使用runmqdnm运行监视器时,出现了一个异常: runmqdnm -m myqmgr -q myqueue -a TransactionalMonitor.dll -c TransactionalMonitor.Monitor 5724-H72 (C) Copyright IBM Corp. 1994, 20
runmqdnm -m myqmgr -q myqueue -a TransactionalMonitor.dll -c TransactionalMonitor.Monitor
5724-H72 (C) Copyright IBM Corp. 1994, 2017.
AMQ8377: Unexpected error 2354 was received by the application.
我直接在我的MQ服务器上运行该示例,这是一台安装了IBM MQ 9.0.0.3服务器的Windows server 2012 R2计算机
作为参考,我实施的代码:
using System.EnterpriseServices;
using IBM.WMQ;
using IBM.WMQMonitor;
[assembly: ApplicationName("TransactionalMonitor")]
namespace TransactionalMonitor
{
[Transaction(TransactionOption.Required)]
public class Monitor : ServicedComponent, IMQObjectTrigger
{
[AutoComplete(true)]
public void Execute(MQQueueManager qmgr, MQQueue queue, MQMessage message, string param)
{
System.Console.WriteLine("SETTING COMMIT");
ContextUtil.SetComplete();
}
}
}
当删除事务性内容时,示例工作正常。
我做错了什么?您没有说您实际使用的IBM MQ版本(您提到的是MQ V9文档) 我将使用您拥有的最早的.NET版本编译您的退出。人们尝试使用最新和最好的,但大多数情况下,它不会起作用 i、 e.对于64位DLL
C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\csc.exe /nologo /t:library /platform:x64 /r:System.dll /r:"%MQ_FILE_PATH%\bin\amqmdnet.dll" /out:TransactionalMonitor.dll TransactionalMonitor.cs
仅供参考:
升级到9.0.5版后,问题已修复。
还要确保MSRPC和MSDTC端口未被防火墙阻止。
请参阅,以了解有关该版本的更多信息。MQ版本为9.0.0.3。我试着像你建议的那样在命令行上编译程序(我不得不添加一个额外的引用amdmdnm.dll),但结果相同<代码>C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\csc.exe/nologo/t:library/platform:x64/r:System.dll/r:“C:\Program Files\IBM\MQ\bin\amqmdnet.dll”/r:“C:\Program Files\IBM\MQ\bin\amqmdnm.dll”/out:TransactionalMonitor.dll TransactionalMonitor.cs如果您使用的是MQ知识中心(又称手册)中的内容,我会在IBM打开一个PMR,并询问他们为什么它不起作用。