当前位置: 首页 > 知识库问答 >
问题:

使用保价信函在JBoss ESB中发布订阅者设计

刘弘新
2023-03-14

我在设计将在JBoss ESB上运行的发布/订阅服务时遇到了问题。我需要能够发布一个主题的消息,可能会有200个订阅者在听,他们一旦收到消息就会做一些事情。我正在编写一个发布服务和一个示例订阅服务来展示它是如何实现的。

我需要保证向这些订阅者交付。如果它们在一段时间内脱机,并且消息在该时间内发布,则当它们重新联机时,需要传递这些消息。所以我认为这意味着他们需要是持久的订阅者(我的理解是主题不是持久的,但订阅者被定义为持久的)。

我现在有一个发布服务,它将ESB消息粘贴到ESB感知队列上,调用NotifyTopic,将消息粘贴到不感知ESB的主题上。我有一个订阅者,它有一个ESB未知主题的侦听器,它使用httprouter调用Web服务,httprouter将消息发送给我的Web服务处理。这一切都正常-除了当我的Web服务离线时(我必须弄清楚如何处理这种情况,但我还没有做到),或者如果我的ESB订户服务离线(我通过卸载它,发送一些发布消息,然后重新安装它来进行测试-没有积压的消息发送到我的webservice)。

我很确定我没有正确构建订阅者。我认为我需要将订阅者部署在ESB上。我不知道它将如何工作,否则它将如何部署在不同的服务器上,然后仍然连接到ESB(试图避免与相互ssl、防火墙、端口等混淆)。我认为将订阅者安装在ESB上是最好的选择。但是我不知道如何让它持久/保价信函。

共有1个答案

施赞
2023-03-14

摘自创建健壮的 JMS 应用程序

创建长期订阅

要确保pub/sub应用程序接收到所有已发布的消息,请为发布者使用PERSISTENT交付模式。此外,为订阅者使用持久订阅。

TopicSession.createSubscriber方法创建非持久订户。非持久订户只能接收在其活动期间发布的消息。

以较高的开销为代价,您可以使用主题会话.create持久订阅者方法来创建持久订阅者。持久订阅一次只能有一个活动订阅者。

[...]

通过设置以下内容来建立持久订户的唯一标识:

  • 连接的客户端 ID
  • 订阅者的主题和订阅名称

我已经使用JBoss 7运行了一些测试

  • 我已在连接工厂级别设置了客户端 ID
  • 对三个订阅服务器中的每一个使用不同的订阅名称:
java prettyprint-override">topicSession.createDurableSubscriber(topic, subscriptionName);

JMS服务器为每个断开连接的订阅者正确缓冲消息。

 类似资料:
  • 我正在创建一个API来发布和使用来自RabbitMQ的消息。在我当前的设计中,发布者将发出一个POST请求。我的API会将POST请求路由到Exchange。这样,发布者在发布时就不必知道服务器地址、exchange名称等。 现在消费者部分是我不确定如何继续的地方。 开始时不会排队。当一个新的消费者想要订阅一个主题时,那么我将创建一个队列并将其绑定到交换。我需要一些问题的答案- 一旦我为使用者创建

  • 目前,我已经开始使用ActiveMQ处理JMS主题。我已经通过JAVA代码(如下所述)创建了发布者和持久订阅者,并且在订阅者端也收到了消息。 Publisher.Java 订阅者.java 我对以下主题有一些疑问, 如何检查有多少订阅者使用 Java JMS 在主题中主动查找消息? 如何从主题中获取活动和持久订阅者列表? 我们是否可以删除主题中发布的消息? 在这些情况下帮助我。 提前致谢。

  • 简介 Redis 的列表类型键可以用来实现队列,并且支持阻塞式读取,所以 Redis 能够非常容易的实现一个高性能的优先队列。同时在更高层面上,Redis 还支持“发布/订阅”的消息模式,可以基于此构建一个聊天系统。 发布示例 发布(Publish)即将消息发布到频道中。示例代码: // 发送消息 Redis::publish('chan-1', 'Hello, World!'); // 发送消息

  • 我需要在发布/订阅模式下调用Kafka消费者1000次。据我所知,为了让kafka在发布/订阅模式下工作,我需要给每个消费者一个新的groupId(props . put(" group . id ",String.valueOf(Instant.now())。toEpochMilli()));).但是当我这样做的时候,如果两个消费线程同时访问消费线程,就会出现问题。这个问题应该怎么解决?

  • 我想用Java实现各种各样的发布者/订阅者模式,但目前已经没有主意了。 有1个发布者和N个订阅者,发布者发布对象,然后每个订阅者需要按照正确的顺序对每个对象进行一次且仅处理一次。发布者和每个订阅者在自己的线程中运行。 在我最初的实现中,每个订阅者都有自己的阻塞队列,发布者将对象放入每个订阅者的队列中。这可以正常工作,但如果任何订阅者的队列已满,发布者将被阻塞。这会导致性能下降,因为每个订阅者处理对

  • 本文向大家介绍JavaScript设计模式之观察者模式(发布者-订阅者模式),包括了JavaScript设计模式之观察者模式(发布者-订阅者模式)的使用技巧和注意事项,需要的朋友参考一下 观察者模式( 又叫发布者-订阅者模式 )应该是最常用的模式之一. 在很多语言里都得到大量应用. 包括我们平时接触的dom事件. 也是js和dom之间实现的一种观察者模式. 只要订阅了div的click事件. 当点