配置JMS队列以删除所有消息以进行测试

配置JMS队列以删除所有消息以进行测试,jms,ibm-mq,Jms,Ibm Mq,有没有办法将JMS消息队列配置为自动删除所有接收到的消息?(换句话说:对于发送方来说,消息到达时必须看起来正常,但队列应该无声地丢弃它。也就是说,队列的行为应该类似于“/dev/null”),如果这很重要,我最感兴趣的是IBM MQ,但是,如果JMS规范提供了这种可能性,那就更好了 由于我已经尝试过搜索,但没有发现这种可能性,我怀疑答案是“没有”。因此,一个证实这一点的答案(我没有遗漏任何东西)对我来说也是有效的 用例:测试一个系统,它将消息发送到一个真正的JMS队列,而这个队列(在测试设置中)

有没有办法将JMS消息队列配置为自动删除所有接收到的消息?(换句话说:对于发送方来说,消息到达时必须看起来正常,但队列应该无声地丢弃它。也就是说,队列的行为应该类似于“/dev/null”),如果这很重要,我最感兴趣的是IBM MQ,但是,如果JMS规范提供了这种可能性,那就更好了

由于我已经尝试过搜索,但没有发现这种可能性,我怀疑答案是“没有”。因此,一个证实这一点的答案(我没有遗漏任何东西)对我来说也是有效的


用例:测试一个系统,它将消息发送到一个真正的JMS队列,而这个队列(在测试设置中)不会被任何其他程序读取。(我不想模拟JMS队列,以使测试环境尽可能接近生产环境。出于同样的原因,它也不是一个有效的解决方案,例如在客户端为消息设置“生存时间”)

如何制作一个队列,将其作为主题的别名,而没有人监听它

e、 g:

然后,您可以将其放入队列,它将成为发布,如果没有人在队列上侦听,它将消失<例如,code>amqsput MYQUEUE QM可以正常工作

当您希望随后使用消息时,可以将QALIA更改为指向实际队列,或者使用QLOCAL(例如)替换QALIA定义


唯一的缺点是,如果任何人都订阅了每个主题,但出于测试目的,您可以

如果您想要一种不同的方法来控制(关闭/打开)被删除/删除的消息流,那么MQ服务和我的“emtyq”程序是另一种选择


这是我不久前写的一篇关于这个主题的文章:

队列管理器上运行的是什么版本的IBM MQ?我不确定。。。对于某些版本是否有一个好的解决方案,而对于另一个版本则没有?由@JasonE提供的pub-sub解决方案将适用于v7.0及更高版本,而不是v6及更低版本。V7.5是目前受支持的最低版本,但我问了这个问题,因为仍然有很多人使用非常旧的不受支持的MQ版本。Jason提供的解决方案是假设您运行的是v7或更高版本,我将建议您使用的解决方案。根据你的评论,你有一个Roger建议的解决方案,但我们正在寻找Jason接受的解决方案,我建议你接受Jason的答案。是的(虽然我没有在问题中写出来),我们的方法是类似的:我们有一个虚拟程序来读取队列。然而,我正在寻找一种配置唯一的方法(类似于@JasonE的答案)。不过很有趣:在链接帖子的底部,还提到了@JasonE答案的变体:)
def qalias(MYQUEUE) target(DUMMYTOPIC) targtype(TOPIC)
def topic(DUMMYTOPIC) topicstr(DUMMYTOPIC)