как использовать пул соединений для создания издателя в JM с использованием activeMQ - PullRequest
0 голосов
/ 10 июля 2019

Я использую следующий код для создания издателя каждый раз, когда мне нужно добавить сообщение в тему, я буду запускать это, но иногда это выдает ошибку

ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://" + ip + ":" + port );           
connection = connectionFactory.createConnection();
connection.setClientID(publisherName);

PooledConnectionFactory pf = new PooledConnectionFactory(connectionFactory);
pf.setMaxConnections(1000);

Session session = connection.createSession(false,session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic(TopicName);
MessageProducer messageProducer = session.createProducer(topic);

Ошибка:

javax.jms.InvalidClientIDException: Broker: localhost - Client: AthenaPublisher already connected from tcp://127.0.0.1:44448

1 Ответ

0 голосов
/ 10 июля 2019

Использование пула при установке идентификатора клиента неизбежно приведет к таким ошибкам, поскольку вы можете иметь только одно соединение с данным идентификатором клиента, подключенным к брокеру в любой момент времени.В вашем случае вы конфигурируете пул для 1000 подключений в пуле, поэтому довольно часто будет происходить создание нового подключения и выдача указанной вами ошибки.Вам не нужно ни использовать пул, ни использовать пул только с одним соединением в пуле, которое совместно использует ресурсы уровня сеанса с вашим кодом.

...