无法向 Solace MQ 发送批量消息

Posted

技术标签:

【中文标题】无法向 Solace MQ 发送批量消息【英文标题】:Not able to send bulk messages to Solace MQ 【发布时间】:2017-05-13 03:51:26 【问题描述】:

在我的应用程序中,我们使用 Solace MQ 并使用 HermesJMS 工具向本地环境中的 MQ 发送消息。

当我尝试向 MQ 发送批量消息时,我得到下面提到的异常。我使用 Spring Integration 代码来使用来自 Solace MQ 的消息

Caused by: com.solacesystems.jcsmp.transaction.RollbackException: Transaction '404' unexpectedly rolled back during commit attempt. (((Client name: ILCH-D889198/13740/#00020005   Local addr: 10.80.29.163:51052   Remote addr: appwpcuteai09.ntrs.com:55555) - )  com.solacesystems.jcsmp.JCSMPErrorResponseException: 503: Transaction Failure: The number of messages in the transaction exceeds the limit [Subcode:63])
                at com.solacesystems.jcsmp.impl.transaction.TSState$StateCommitting.handleAsyncAdCtrl(TSState.java:528) ~[jcsmp-7.0.0.63.jar:?]
                at com.solacesystems.jcsmp.impl.transaction.TransactedSessionImpl.handleControlMessage(TransactedSessionImpl.java:326) ~[jcsmp-7.0.0.63.jar:?]
                at com.solacesystems.jcsmp.impl.transaction.TransactedSessionManager.dispatchAssuredCtrlMessage(TransactedSessionManager.java:91) ~[jcsmp-7.0.0.63.jar:?]
                at com.solacesystems.jcsmp.impl.transaction.TransactedSessionManagerSmf.handleAsyncAssuredCtrlMessage(TransactedSessionManagerSmf.java:167) ~[jcsmp-7.0.0.63.jar:?]

此异常是否与 int-jms:message-driven-channel-adapter 中的某些属性相关,这些属性用于 Spring 集成或 Solace MQ 属性。请提出建议。

【问题讨论】:

请详细说明。这完全不清楚 `int-jms:message-driven-channel-adapter` 与 send 操作的关系。 OTOH 异常也很清楚:The number of messages in the transaction exceeds the limit。因此,请咨询 Solace MQ 如何处理此类问题。另外,很高兴看到您真正发送“批量消息”的方式。 int-jms:message-driven-channel-adapter 用于消费来自 Solace MQ 的消息。我正在使用 hermesJMS toll 将消息放在 MQ 中。它只是在工具中复制粘贴。 然后呢?那没有帮助。你哪里有这个例外 当我将批量消息放入工具时,我在 STS 控制台上看到该异常。当我注释掉 jms 适配器时,我仍然在控制台上看到异常。所以它的 Solace MQ 好的。因此,由于我不熟悉 Solace,因此我无法从 Spring 集成的角度为您提供帮助。对不起。但对于其他人来说,最好在问题中反映你的问题的现实,不要用无用的信息污染,比如int-jms:message-driven-channel-adapter 【参考方案1】:

异常意味着您在单个事务中发送了太多消息。

截至目前,Solace 最多支持单个事务中的 256 条消息。增加最大值已在 Solace 的候选功能列表中,但尚未提交到特定版本。

目前,唯一的解决方法是减少事务中的消息数量。

【讨论】:

以上是关于无法向 Solace MQ 发送批量消息的主要内容,如果未能解决你的问题,请参考以下文章

封装复杂度之批量接口

常见MQ总结与汇总

如何使用 azure hub 向某些用户发送批量推送通知

如何向 C2DM(Android 推送服务)发送批量请求?

mq网络请求命令设计

批量 Firebase 云消息传递的限制