7

尝试向 TIBCO Ems 队列发送消息时出现异常(如下所示)。

 javax.jms.ResourceAllocationException: Queue limit exceeded
 at com.tibco.tibjms.Tibjmsx.buildException(Tibjmsx.java:523)
 at com.tibco.tibjms.TibjmsxSessionImp._publish(TibjmsxSessionImp.java:1390)
 at com.tibco.tibjms.TibjmsMessageProducer._publish(TibjmsMessageProducer.java:246)
 at com.tibco.tibjms.TibjmsQueueSender.send(TibjmsQueueSender.java:51)

我看到这个例外的唯一地方是这个链接:http ://class10e.com/tibco/a-queue-is-defined-as/

从这里我可以猜到,在发送任何消息之前,每个队列至少需要一个消费者。一旦我创建了一个消费者,它就可以工作,但最多只有 5 或 6 条消息。奇怪的是,我在每次测试之前都清空了队列,而且我发送的是完全相同的短信,所以没有大小差异。为什么有时会在 5 条消息后失败,有时会在 6 条消息后失败?最初清空队列后,我没有使用消息(我创建了一个消费者,但使用 Eclipse 调试来暂停消息消费者的线程)。有谁知道这个异常的原因是什么?

4

4 回答 4

2

小心使用

setprop queue queue-name maxmsgs=10000

setprop queue queue-name maxbytes=1024MB

Setprop 删除队列的所有参数并将它们替换为默认参数,除了您要更改的一个参数。如果您只想更改一个参数而不触及其他参数,请使用

addprop queue queue-name PARAMETER=VALUE

Addprop添加新参数或修改现有参数。如果您想了解更多信息setpropaddprop输入

help setprop

help addprop 

登录到EMS服务器时。

于 2018-10-23T07:41:31.597 回答
1

似乎在目标上设置了 MAXBYTES 或 MAXMSGS 属性。导致超出队列限制错误。

请检查您的目的地财产..

希望这可以帮助

于 2013-05-13T09:17:27.063 回答
0

使用此命令从 EMS 管理工具中创建队列大小

setprop queue queue-name maxmsgs=10000

setprop queue queue-name maxbytes=1024MB

于 2016-04-08T23:37:23.410 回答
-1

此错误可能是由于以下

EMS 队列的默认大小为 512MB,如果超过此大小则错误

于 2013-05-03T11:13:53.530 回答