Как получить заказ для разных MessagePostProcessors в SimpleMessageListenerContainer

У меня есть несколько MessagePostProcessors в SpringAMQP, которые я установил с помощью SimpleMessageListenerContainer.setAfterReceivePostProcessors API, теперь мой запрос: вызываются ли эти MessagePostProcessors в указанном мной порядке.

Код псевдонима

SimpleMessageListenerContainer container = // api returing SimpleMessageListenerContainer object 
container.setAfterReceivePostProcessors(new MessagePostProcessor[] {
                messagePostProcessors1 , messagePostProcessors2});

Итак, Spring AMQP вызывает сообщение messagePostProcessors1 после messagePostProcessors2 последовательно или случайно выбирает то же самое?

Если он выбирает случайным образом, есть ли способ, которым мы можем заказать то же самое, то есть messagePostProcessors2 всегда вызывается после messagePostProcessors1


person Akshat    schedule 15.09.2016    source источник


Ответы (1)


Акшат, порядок основан на порядке, который установлен в процессоре. Цитата из документа здесь. Когда я смотрю на конкретную реализацию процессоров, я обнаруживаю, что есть setOrder (я думаю, интерфейс формы упорядочен). Может быть, настройка этого в вашем почтовом процессоре сделает свое дело.

public void setAfterReceivePostProcessors (MessagePostProcessor ... afterReceivePostProcessors)

Установите MessagePostProcessor, который будет вызываться сразу после Channel # basicGet () и до выполнения любого преобразования сообщения. Может использоваться для таких операций, как декомпрессия. Процессоры вызываются по порядку, в зависимости от PriorityOrder, Order и, наконец, неупорядоченного.

person Ramachandran.A.G    schedule 15.09.2016
comment
Вам не нужно реализовывать Ordered - постпроцессоры, которые не будут вызываться после всех, которые выполняются (и в том порядке, в котором они были переданы) - так что ... 1, затем ... 2 в этом случае. - person Gary Russell; 15.09.2016