Кажется, что в настоящее время ведет себя как ожидалось.
Вся проблема обсуждалась на быстрых форумах: Назначение себя в расширениях протокола
В последний раз, когда эта странность возникала во внутренних дискуссиях, некоторые у нас было то, что, возможно, стоило бы запретить классам соответствовать протоколам с изменяющимися требованиями в целом. Если задуматься, это имеет некоторый смысл - кажется, что было бы довольно сложно написать код, который может работать как с изменяемыми значениями, так и с изменяемыми ссылками в целом, поскольку последние не имеют семантики значений:
[110 ]Однако дискуссия как бы провалилась.
BLOCKQUOTE>
Вам нужен какой-либо вид персистентности (например, если Ваша JVM умирает промежуточная обработка тысячи сообщений), и Вам нужны сообщения для пересечения к какому-либо другому JVMs?
Если все в единственной JVM и Вы не должны волноваться о транзакциях, восстановлении или потере сообщений, если JVM умирает - затем, как Chris говорит выше, Исполнители в порядке.
ActiveMQ довольно легок; можно использовать его в единственной JVM только без персистентности, если Вы хотите; можно затем включить транзакции / персистентность / восстановление / дистанционная работа (работающий с несколькими JVMs) как и когда Вам нужен он. Но если Вам не нужна ни одна из этих вещей затем, его излишество - просто использует Исполнителей.
Случайно другая опция, если Вы не уверены, каким шагам, возможно, понадобились бы персистентность/надежность или выравнивание нагрузки к нескольким JVMs, будет состоять в том, чтобы скрыть использование промежуточного программного обеспечения полностью, таким образом, можно переключиться между в память очереди SEDA с исполнителями к JMS/ActiveMQ как и когда Вы должны.
например, могло бы случиться так, что некоторые шаги должны быть надежными и восстанавливаемыми (настолько нуждающийся в некоторой персистентности) и другие времена, которые Вы не делаете.
Действительно легкий? Исполнители.:-) Таким образом, Вы настраиваете исполнителя (B, в Вашем описании), и просто отправляет задачи исполнителю.
Я думаю, что Apache Camel удовлетворит все ваши потребности. Он работает в JVM и поддерживает стиль SEDA ( http://camel.apache.org/seda.html ) и упрощенную маршрутизацию. Может использоваться отдельно или с пружиной, с поставщиком JMS или другими адаптерами.
Извините за воскрешение старой темы, но может быть это поможет кому-то еще, читающему это.... Я думаю, FFMQ является хорошим кандидатом на создание легковесного фреймворка для обмена сообщениями.
UPDATE: однако я не уверен, поддерживает ли он задержки с повторной доставкой (проблема "мертвой очереди"). Я бы счел это удобным даже для легких провайдеров. Но я думаю, что это возможно с помощью комбинации запроса MessageSelector и свойств сообщения.