Мне нужно реализовать с помощью библиотек весной-интрагации конвейер сообщений. В начале, как я вижу сейчас, он должен содержать несколько элементов:Найти подходящую пару queue-consumer
a. шлюз сообщений,
@MessagingGateway(name = "entryGateway", defaultRequestChannel = "requestChannel")
public interface MessageGateway {
public boolean processMessage(Message<?> message);
}
, который вызывается, когда я хочу, чтобы запустить трубопровод:
messageGateway.processMessage(message);
б. Канал для передачи сообщений:
@Bean
public MessageChannel requestChannel() {
return new DirectChannel();
}
c.Router который определяет то, где поток сообщений
@MessageEndpoint
@Component
public class MessageTypeRouter {
Logger log = Logger.getLogger(MessageTypeRouter.class);
@Router(inputChannel="requestChannel")
public String processMessageByPayload(Message<?> message){...}
Там может быть много входящих сообщений в небольшой период времени, поэтому я хотел бы реализовать канал (б) в качестве QueueChannel:
@Bean
public MessageChannel requestChannel() {
return new QueueChannel();
}
с другой стороны, я хотел бы маршрутизатор, чтобы начать, как только приходит сообщение через шлюз и другие сообщения ждать в очереди. Но в этом случае я получил ошибку, в которой говорилось, что я должен был использовать poller.
Может быть, вы могли бы дать мне совет, как я могу реализовать свою схему. Заранее спасибо.
Как вы можете видеть, я не хочу использовать семантику опроса. Я использую управляемый сообщениями шлюз, который на самом деле не совместим с queueChannel, как я читал. Возникает вопрос: как я могу хранить несколько входящих сообщений, используя семантику, управляемую сообщениями. – user2957954
OK. Как насчет «ExecutorChannel»? Любое входящее сообщение будет ожидать, что бесплатный 'Thread' будет обработан во внутренней' queue' 'ThreadPollTaskExecutor' –
Это мой pipleline: gateway -> channel -> Router -> дальше. Мне нужно реализовать Router и другие как Runnable, если я хочу выполнить userChannel, не так ли? – user2957954