EMS не должно быть горлышком бутылки. Я провел тестирование, и мы получили небольшую пропускную способность на нашем сервере.
Вам нужно попытаться определить, где находится горлышко бутылки. Есть проблема у производителя сообщения или у потребителя. Сообщения накапливаются в очереди.
Какой тип сценария вы делаете.
Pub / sup или запрос ответа?
у вас накапливается временная очередь? Слишком много временных очередей может вызвать проблемы с производительностью. (В основном, когда они задерживаются, потому что вы что-то не закрыли должным образом)
Публикуете ли вы тему с постоянными подписчиками, если это так. Попробуйте соединить тему с очередью и читать из них. Постоянные подписчики также могут привести к небольшому снижению производительности, поскольку необходимо отслеживать, у кого есть копии всех сообщений.
Убедитесь, что ваш процесс отправки имеет один сеанс и несколько вызовов через этот сеанс. Не открывайте полный сеанс для каждой операции. Повторно используйте, где это возможно. Сделайте то же самое для потребителя.
убедитесь, что вы ЗАКРЫВАЕТЕ, когда закончите. EMS не проясняет ситуацию. Поэтому, если вы устанавливаете соединение и просто закрываете свое приложение, соединение все еще существует и поглощает ресурсы.
проверить вашу терпимость к потерянным сообщениям даже в случае сбоя. Если вы выполняете Client Ack, и не имеет значения, что вы потерпели крах при обработке сообщения, переключитесь на auto. Также я считаю, что если вы используете (TEMS - Tibco EMS для WCF), есть проблема с подтверждением сеанса. Таким образом, сообщение только в том случае, если оно обрабатывается на всем сообщении, мы переключились с Client ACK на тот, на котором был установлен Dups, и он работал лучше)