首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有工具可以修改持久的JMS主题消息?

有没有工具可以修改持久的JMS主题消息?
EN

Stack Overflow用户
提问于 2015-09-16 00:01:00
回答 1查看 213关注 0票数 1

我们正在使用Websphere MQ8,并考虑使用持久主题来实现发布和订阅模式。

我们已经在使用Queues和Hermes JMS-Browser来纠正错误的队列消息。

我知道你可以使用Hermes订阅主题,但我认为你不能访问和修改已经为特定客户端保留的消息。

所以我想知道--当特定客户端应用程序存在客户端不能使用的持久消息时,例如消息格式错误,您如何处理这些问题?

您是否必须删除此客户端的所有未送达邮件?或者有没有什么工具可以做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2015-09-16 23:43:59

当特定客户端应用程序存在客户端无法使用的持久性消息时(例如,由于消息格式错误),您如何处理问题?

使用

的应用程序(客户端)应该有适当的异常处理,并且应该抛出所有坏的/有害的消息。

是否必须删除此客户端的所有未送达邮件?或者有没有什么工具可以做到这一点?

一旦TTL (生存时间)到期,MQ服务器将自动删除消息。我们不能手动删除这些消息,因为它们属于/意味着原始客户端(这是一个持久的订阅者)。

下面的链接很好地解释了JMS持久订阅的概念:https://docs.oracle.com/cd/E19798-01/821-1841/bncgd/index.html

此外,我还提供了该工具的以下示例代码,它记录(不会删除)持久订阅主题中的消息:

代码语言:javascript
复制
   InitialContext ctx = new InitialContext();
   Topic topic = (Topic)ctx.lookup("myJMSTopic1");

   TopicConnectionFactory connFactory = (TopicConnectionFactory) ctx.lookup("topicConnFactory");
   TopicConnection topicConn = connFactory.createTopicConnection();
   topicConn.setClientID("myToolId1"); //Use a different client id than original subscriber

   TopicSession topicSession = topicConn.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);

   TopicSubscriber topicSubscriber = topicSession.createDurableSubscriber(topic, "myClientExistingDuraSubName"); // this is where you have to provide the original client's durable subscription name

   while(true) {
        Message message = topicSubscriber.receive();
        TextMessage txtMsg = (TextMessage)message;
        logger.info(txtMsg.getText());
   }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32590639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档