问题标签 [xms]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
128 浏览

c# - 如果连接未重新启动,MessageListener 只会读取一条消息

我在阅读 IBM MQ (c# + IBM.XMS + ibmcom/mq:latest) 上的第二条消息时遇到问题。使用默认队列“DEV.QUEUE.1”,只有在第一条消息到达后连接停止并重新启动(conn.Stop()/conn.Start())时,它才会继续侦听消息。如果在侦听器运行时消息已经在队列中,则所有消息都被立即消费。

我正在使用 Docker,这是 MQ 版本信息:(已尝试多个旧版本)

使用的代码:

谢谢

0 投票
0 回答
62 浏览

.net - 在 IIS 10 托管的 .net 应用程序中运行时出现 Apache.NMS.XML 错误。原因:2381

我最近将我们的应用程序迁移到了运行 IIS 10(以前的 IIS 7.5 版本)的新服务器上。现在我的 api Web 应用程序无法通过 apache NMS.XML 包连接到我们的 IBM MQ 队列管理器(CompCode:2,Reason:2381,IBM.XMS.XMSException:CWSMQ0006E)。

我尝试在控制台应用程序(相同的 .net 版本、服务器、域和用户)中运行代码,在这种情况下它运行良好。它仅在我们的 IIS 托管 Web 应用程序上失败。

以下是由于 Web 应用程序无法连接到队列管理器而导致的错误。

来自 MQ 客户端的错误:

来自 Apache.NMS.XML 包的错误:

0 投票
1 回答
101 浏览

c# - IBM MQ .net XMS 读取字节消息时出错,字节长度错误

我有一个用于获取 IBM mq 消息的 C# 客户端。我正在尝试从队列中读取字节消息。但我收到以下错误。

IBM.XMS.MessageEOFException: CWSMQ0136I: 尝试读取超出消息末尾的内容。已尝试阅读超出消息末尾的内容。如果应用程序已被编码为使用 JMS 1.0.2 规范读取可变长度数据,这可能是正常情况。如有必要,重新编码应用程序以使用新的 getBodyLength 方法。在 IBM.XMS.Client.Impl.XmsBytesMessageImpl.ReadUTF()

我在 C# 中尝试了以下代码,

该错误表明我在我见过的 java 中使用 getBodyLength()

但是我如何在 C# 中做到这一点。我看到它的 GetBodyLength 不可用?

0 投票
1 回答
38 浏览

c# - IBM XMS .Net 如何从 MQ 接收 png 和 jpg 等图像文件

我有一个 .net XMS 客户端来接收来自 MQ 的消息。它可以很好地接收文本文件。但是当我尝试接收 .zip 或 png 文件时,问题就开始了。问题是保存的文件已损坏并且总是将其解释为文本消息。

msg.Text删除字符
我在记事本++中打开了原始的png文件并找到了字符,例如下面

我还尝试复制文本并将文本粘贴到新文件中会损坏文件。我错过了什么...被翻译成

无论如何都要用缺少的字符来阅读它

0 投票
1 回答
57 浏览

transactions - IBM XMS:CommittableTransaction() 与会话事务,它们中的任何一个都是全局的吗?

我正在使用事务来读取和确认 IBM 队列上的消息,我想知道当多个消费者实例从同一个队列中读取时,创建的会话是否会全局connection.CreateSession(true, AcknowledgeMode.SessionTransacted)锁定消息?

背景:我编写了一个小型 .NET Core 后台服务,它使用 IBM XMS 获取队列的消息。此服务的实例将托管在两个不同的服务器上(负载平衡),每个服务将连接到同一个队列。我担心的是,由于不同服务器上的两个不同消费者正在从同一个队列中读取,他们可能会尝试使用相同的消息。

我最近遇到了SimpleXAConsumer示例,其中使用了CommittableTransaction()对象而不是会话事务。该文件指出:

“当使用 XA 事务时,事务控制是通过分布式事务协调器 (DTC)全局事务进行的,而不是通过 XMS 会话。”

...这让我相信 XMS 会话事务不是全局的,除非使用 CommittableTransaction() 对象。

如果有人可以确认,那就太好了:

  1. 如果必须使用 CommittableTransaction() 来创建全局事务。
  2. 如果一个全局事务锁定了一条消息,以便没有其他消费者可以使用它。
0 投票
0 回答
28 浏览

multithreading - IBM XMS:会话范围多线程安全吗?

运行多线程时会话范围是否安全?我有一个单例服务(多线程),它的方法如下所示:

在我看来,每次调用该方法都会创建自己的会话范围,该会话范围彼此并行运行。

另一方面,如果两个线程彼此靠近运行,那么当创建一个会话时,另一个会话将在该会话创建。

这种方法多线程“安全”吗?或者我需要在这种情况下使用锁吗?

0 投票
1 回答
73 浏览

websphere - IBM MQ Internet Pass-Thru 许可要求

我们在我们的组织内配置了一个 IBM MQ Internet Pass-Thru V2.1.0.1(MQIPT),它使用外部组织“X”发布的消息。外部组织“X”已分发此 MQIPT 以在我们的场所内使用。我们正在尝试通过托管在我们场所的 MQIPT 将“X”发布的消息使用到托管在他们身边的 IBM MQ(完全许可)。

我们已使用 .NET 库“XMS.Net”(https://www.ibm.com/support/pages/xms-net-%E2%80%93-overview)通过 MQIPT 使用消息。许可上说它在 90 天内是免费的。

在此配置中,使用 XMS.NET IBM C# 库需要什么许可要求?

谁能告诉我,除了“X”已经拥有的许可证之外,我们是否还需要购买任何许可证?如果是的话,通常需要多少钱?我正在尝试从 IBM 获得帮助,但考虑到他们的优先级,我希望我能从这里得到更快的答案。

0 投票
0 回答
44 浏览

transactions - MQ:如果消息回滚失败会发生什么?

我使用 IBM.XMS (9.1.0.0) 从我的 .NET 应用程序的队列中获取消息。在会话下,我从队列中获取消息然后插入数据库(SQL 服务器),如果一个步骤失败,会话将回滚。该消息将返回到队列中,以便我下次可以得到它。这工作正常,直到有一天,一条消息丢失并且 MQ 日志说:

IBM.XMS.XMSException: CWSMQ0067E: 回滚失败。对底层队列管理器对象的 Backout() 操作失败。

链接异常:CompCode:2,原因:2018

我不确定这个错误是否是原因,所以我的问题是:如果出现“回滚失败”异常会发生什么,消息是否会返回队列?

0 投票
1 回答
69 浏览

c# - IBM XMS Receive 方法不立即返回消息

我使用 IBM XMS 连接到第三方以发送和接收消息。

更新:

  • 客户端.Net Core 3.1
  • 来自 Nuget 的 IBM XMS 库版本。尝试了 9.2.4 和 9.1.5,结果相同
  • 一周前使用相同的代码可以正常工作 - 所以 MQ 管理器或我的基础架构中的某个地方一定发生了变化
  • SSL 和客户端证书

我一直在使用超时接收没有问题,但从上周开始,我开始看不到任何要选择的消息 - 即使它们在那里 - 但是一旦我更改为非超时接收方法,我再次开始每5分钟。

查看 XMS 日志,我可以看到消息实际上几乎立即被读取,有无超时,但 XMS 似乎决定在返回消息之前等待这 5 分钟......

我没有改变我的任何东西,第三方向他们保证他们也没有。

我的问题是:鉴于以下用于接收的代码,是否有任何可能导致 5 分钟等待的原因?关于我可以尝试的事情有什么想法吗?如果有帮助,我也可以分享 XMS 日志。

0 投票
0 回答
38 浏览

c# - IBM MQ XMS.NET IBM.XMS.IllegalStateException:CWSMQ0076E

我在向生产者发送一些消息的重负载条件下收到此错误。但我的连接是在托管模式下创建的:

并且这个错误应该只发生在非托管连接中:

https://www.ibm.com/support/pages/apar/IT09917

以前有没有其他人遇到过这个错误。

完整错误:

IBM.XMS.IllegalStateException: CWSMQ0076E: 在启用 XA 事务的会话上调用 XA 事务范围之外的 Send 方法无效。应用程序调用了必须在 XA 事务范围内调用的 XA 事务范围之外的方法,因为会话用于 XA 事务。更改应用程序以删除此行为。