【发布时间】:2021-05-13 20:38:16
【问题描述】:
@Component
@RequiredArgsConstructor
public class EventListener {
private final EventProcessingService eventProcessingService;
@JmsListener(destination = "inputQueue", constainerFactory = "myContainerFactory)
public void receiveMessage(Message message) {
eventProcessingService.doSome(message).subscribe(); // return Mono<Void>
}
}
@Service
public class EventProcessingService {
public Mono<Void> doSome(Message message) {
//...
}
}
@Configuration
@RequiredArgsConstructor
public class MqIntegration {
private final ConnectionFactory connectionFactory;
@Bean
public Publisher<Message<String>> mqReactiveFlow() {
return IntegrationFlows
.from(Jms.messageDrivenChannelAdapter(this.connectionFactory)
.destination("testQueue"))
.channel(MessageChannels.queue())
.toReactivePublisher();
}
}
我有一些与 ibm mq 交互的 webflux 应用程序和一个 JmsListener,它在收到消息时侦听来自队列的消息 EventProcessingService 根据消息向其他服务发出请求。 我想知道如何使用 Spring Integration 创建一个与反应线程一起使用的 JmsListener。换句话说,我想知道是否可以创建一个集成流,该流将从队列中接收消息并在收到消息时调用 EvenProcessingService,这样它就不会对 webflux 应用程序内的线程产生负面影响
【问题讨论】:
标签: spring-boot spring-integration ibm-mq spring-webflux spring-jms