мы используем очень похожий механизм для высокой нагрузки.
это будет работать так, как вы описали
* Агрегировать сообщения за заданный интервал
* Отправить список вместо одного сообщения после этого.
* Начните агрегирование снова.
Вам следует остерегаться следующих ловушек:
* Если вы используете транзакционную систему обмена сообщениями, такую как JMS, вы можете столкнуться с проблемами, потому что ваша реализация не сможет отправлять внутри транзакции JMS, поэтому будет продолжать агрегирование. В зависимости от размера вашей структуры данных для хранения сообщений может не хватить места. Если у вас очень длинные транзакции, отправляющие много сообщений, это может создать проблему.
* Отправка сообщения таким способом будет происходить асинхронно, потому что другой поток будет отправлять сообщение, а поток, вызывающий метод send (), только поместит его в структуру данных.
* Придерживаясь примера JMS, вы должны помнить, что способ, которым сообщения потребляются, также изменяется при этом подходе. Потому что вы получите список сообщений от JMS как одно сообщение. Поэтому, когда вы фиксируете это единственное сообщение JMS, вы фиксируете весь список сообщений. Вам следует проверить, не является ли это проблемой для ваших требований.