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

在ActiveMQ Artemis上的主题上加载平衡使用者

应煌
2023-03-14

我使用的是ActiveMQ Artemis 2.10和JMS Client1.1客户机。

如果我在我的地址上使用了多播路由类型,并且需要持久订阅,我如何在消费者端实现负载平衡?

在ActiveMQ5中,它将是虚拟目的地。

唯一的选择似乎是ActiveMQ Artemis2.10和JMS Client2.0,它们允许您创建共享的持久订阅,这对吗?

还有第三种选择吗?

共有1个答案

艾子石
2023-03-14

我目前的理解是,Active MQ Artemis7.2和JMS Client1.1 Client意味着您不能在主题上进行负载平衡,这是正确的吗?

没有。

唯一的选择似乎是Active MQ Artemis7.2和JMS Client2.0,它们允许您创建共享的持久订阅,这对吗?

ConnectionFactory cf = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
Connection connection1 = cf.createConnection();
connection1.setClientID("myClientID");
Session session1 = connection1.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = new ActiveMQTopic("myTopic");
MessageConsumer consumer1 = session1.createDurableSubscriber(topic, "mySubscriptionName");

Connection connection2 = cf.createConnection();
Session session2 = connection2.createSession();
Destination destination = new ActiveMQQueue("myTopic::myClientID.mySubscriptionName");
MessageConsumer consumer2 = session2.createConsumer(destination);

// Send 2 messages
MessageProducer producer = session1.createProducer(topic);
producer.send(session1.createMessage());
producer.send(session1.createMessage());
producer.close();

// Receive the first message with the first consumer
connection1.start();
Message message1 = consumer1.receive();
consumer1.close();

// Receive the second message with the second consumer
connection2.start();
Message message2 = consumer2.receive();
consumer2.close();

由于JMS1.1不显式地允许共享持久订阅,所以您不能使用CreateDurableSubscriber在同一主题上使用相同的客户机标识符和订阅名称水平扩展应用程序。但是,如果一个应用程序使用CreateDurableSubscriber,而所有其他应用程序使用其“完全限定队列名”直接从基础订阅队列中使用,则可以水平伸缩(完全限定队列名是从第一次使用CreateDurableSubscriberCreateDurableSubscriberCreateDurableSubscriberCreateDurableSubscriber创建时使用的客户端标识符和订阅名派生出来的)。

 类似资料:
  • 我遵循了GKE教程,使用beta Inrit类型创建HTTP负载均衡器,并且在使用nginx映像时工作正常。我的问题是为什么Inrit是必要的。 我可以创建一个容器引擎集群,然后创建一个使用库伯内特斯创建的实例组作为服务后端的HTTP负载均衡器,并且一切似乎都运行良好。当仅在部分流程中使用库伯内特斯似乎运行良好时,为什么我要经历使用Inete的所有麻烦?

  • 如何在L7上的GKE上为GRPC服务进行负载平衡(通过HTTP/2 TLS进行入口)? 我知道我可以选择使用L4(TCP层)来配置具有“LoadBalancer”类型的服务。但是我想知道我是否可以通过HTTP/2 TLS使用入口L7负载平衡。 我还看到“GKE不支持HTTP/2到后端”(打开https://cloud.google.com/load-balancing/docs/backend-s

  • 我需要一些nginx负载平衡方面的帮助。我有一个docker实例,它服务于一个静态网页,它有两个容器,比如说192.168。1.1:8081 - 当我输入这些IP地址192.168.1.1时,这些IP必须服务于我的两个站点之间的负载。 在我的Nginx中,我必须为此设置两个文件 Nginx。conf,在这些文件中,我必须包含我的默认值。conf文件。违约conf文件包含以下信息。 当我键入192.

  • 我们在AWS EKS kubernetes集群中运行了一个Hazelcast 3.12集群。 您知道如何将运行在AWS EKS kubernetes群集内部的具有多个pod的Hazelcast群集暴露到kubernetes群集外部吗? Hazelcast集群有6个吊舱,暴露在kubernetes集群之外,具有LoadBalancer(AWS经典负载平衡器)类型的kubernetes“服务”。 当我

  • 我在AWS中的应用程序ELB后面有一个ec2实例。我想将SSL应用于ec2实例和负载平衡器。对于ec2实例,我购买了ssl并安装了它,它工作正常。对于负载平衡器,我将使用免费的AWS ACM证书并将其安装在负载平衡器上。这会有什么问题吗?i、 e.在ec2和elb上安装SSL。

  • Kafka再平衡算法是否适用于不同主题? 假设我有5个主题,每个主题都有10个分区,同一消费者组中有20个消费者应用程序实例,每个实例都订阅了这5个主题。 Kafka会尝试在20个实例中平衡50个分区吗? 还是它只在一个主题内保持平衡,因此10个第一个实例可能(或可能)接收所有50个分区,而其他10个实例可能保持空闲? 我知道,在过去,Kafka并没有在不同的主题之间取得平衡,但现在的版本呢?