Jms 如何强制ActiveMQ连接为新使用者随机选择代理?

Jms 如何强制ActiveMQ连接为新使用者随机选择代理?,jms,activemq,consumer,Jms,Activemq,Consumer,我使用以下url创建ActiveMQConActionFactory: failover:(tcp://server1:port,tcp://server2:port,tcp://server2:port) 我想做的是从这个代理网络创建多个消息消费者。 以下不是真实的代码,但它有助于理解我是如何做到这一点的: ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("BROKER_URL"); co

我使用以下url创建ActiveMQConActionFactory:

failover:(tcp://server1:port,tcp://server2:port,tcp://server2:port)
我想做的是从这个代理网络创建多个消息消费者。 以下不是真实的代码,但它有助于理解我是如何做到这一点的:

ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("BROKER_URL");
connection = connectionFactory.createConnection();
connection.start();

for (int i=0; i<10; i++) {
session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
Destination queue = consumerSession.createQueue("QUEUE_NAME");
consumer = consumerSession.createConsumer(queue);
consumer.setMessageListener(new MessageListener());
}
ActiveMQConnectionFactory connectionFactory=new-ActiveMQConnectionFactory(“代理URL”);
connection=connectionFactory.createConnection();
connection.start();

对于(int i=0;i实际上,消费者不会连接到随机选择的代理

连接是连接到代理的部分。使用您提供的连接字符串,您将有一个连接映射到一个随机选择的代理。所有使用者都有自己的会话,但他们将使用到该代理的同一个连接

我知道的唯一设置是,您可以通过在连接字符串上设置
?randomize=false
来禁用故障转移协议的随机化行为。这意味着您的连接将首先尝试第一个,然后是第二个,然后是第三个,依此类推

但为了满足您的要求,我会让每个消费者都有自己的连接。这一点,再加上故障转移协议中的随机化功能,会在某种程度上平衡消费者的负载;但不是真的,那里没有智能,只是“随机化”了它连接到的代理

这意味着,我将(根据您的代码)执行以下操作

ActiveMQConnectionFactory connectionFactory=new-ActiveMQConnectionFactory(“代理URL”);

对于(int i=0;i)您的编辑会改变很多问题,通常情况下,答案是:这取决于。您是否有生产商生产这些代理?这是一个代理网络吗?您应该提供有关您的情况和您想要实现的目标的额外信息。此外,此“编辑”会将问题从“如何编写此代码”更改为“如何编写此代码”问一个“我应该如何设计这个问题”。也许考虑一个新的问题,需要额外的信息来给出一个像样的答案。实际上,我只改变了问题标题:“是的,我有一个有多个生产者的经纪人网络,我想从整个网络同时消费信息。
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("BROKER_URL");

for (int i=0; i<10; i++) {

connection = connectionFactory.createConnection();
connection.start();
session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
Destination queue = consumerSession.createQueue("QUEUE_NAME");
consumer = consumerSession.createConsumer(queue);
consumer.setMessageListener(new MessageListener());

}