我正在尝试从IBM WebSphere 9.0文档中使用Transactional .NET监视器样本(请参阅使用.NET Monitor,第675页,第675页,网址:FTP://public.dhe.ibm.com/software/integration/wmq/docs/v9.0/pdfs/mq90.develop.pdf(
我设法编译了一切正常(Targetting .NET 2.0(,但是当使用RunMQDNM运行监视器时,我会得到一个例外:
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服务器上运行示例,这是Windows Server 2012 R2机器,IBM MQ 9.0.0.3服务器已安装。
供参考,我实施的代码:
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版本编译出您的出口。人们尝试使用最新的&最伟大但大多数情况下它将行不通。
即。对于64位DLL
C:WINDOWSMicrosoft.NETFramework64v2.0.50727csc.exe /nologo /t:library /platform:x64 /r:System.dll /r:"%MQ_FILE_PATH%binamqmdnet.dll" /out:TransactionalMonitor.dll TransactionalMonitor.cs
仅供参考:升级到版本9.0.5后解决问题。还要确保MSRPC&MSDTC端口不会被防火墙阻止。有关此信息的更多信息,请参见此博客文章。