ActiveMQ: публиковать сообщения оптом, постоянно, но не асинхронно? - PullRequest
1 голос
/ 25 сентября 2011

возможно ли хранить большое количество сообщений оптом?Я хочу послать им синхронизацию, постоянную, но чтобы получить скорость очень сильно за один раз.

Я использую NMS, версию .net java-framework.Но если вы знаете, как это сделать в Java, это даже поможет.Может быть, я смогу найти решение для .net более простым.

Я думал о таких вещах, как транзакции.Но я получил транзакции только для потребителей, а не для производителей.

1 Ответ

1 голос
/ 25 сентября 2011

Общепринятая мудрость, используемая для предположения, что если вам нужна максимальная пропускная способность при массовой рассылке, вам следует использовать режим подтверждения SESSION_TRANSACTED и пакетировать все отправляемые сообщения вместе с .commit ().

К сожалению, вот эталонный тест, показывающий, что это не так http://www.jakubkorab.net/2011/09/batching-jms-messages-for-performance-not-so-fast.html и вам лучше отправлять их как обычно без транзакций. Если вы уже используете транзакции, возможно, имеет смысл попробовать их пакетировать.

Мой совет здесь также заключается в том, что, если вы не имеете дело с сообщениями, которые являются чрезвычайно чувствительными ко времени, скорость, с которой вы производите, не будет такой большой проблемой - вы должны больше заботиться о пропускной способности, а не о скорости. сообщения отправляет. Если вы не возражаете против того, что ваши сообщения вышли из строя, вы можете попросить нескольких производителей отправлять эти сообщения в заданный пункт назначения ... или, если они вам нужны, использовать нескольких производителей, а затем resequencer после того, как они в брокере.

...